Branch: refs/heads/webkitglib/2.42 Home: https://github.com/WebKit/WebKit Commit: 9b290c232c1729e41c9f004ef73a34caa7d017a2 https://github.com/WebKit/WebKit/commit/9b290c232c1729e41c9f004ef73a34caa7d017a2 Author: Žan Doberšek <zdober...@igalia.com> Date: 2023-09-08 (Fri, 08 Sep 2023)
Changed paths: M Source/JavaScriptCore/assembler/MacroAssemblerRISCV64.h Log Message: ----------- Cherry-pick 267560@main (bb7a34a9631c). <bug> [JSC] Unreviewed RISCV64 build fix Fix the RISCV64 build of JavaScriptCore. In MacroAssemblerRISCV64, the supportsCountPopulation() static function is added, returning false, since the underlying RISC-V functions are only available with certain extensions we currently can't hard-depend on. No-op templates are added for two related count-population methods. * Source/JavaScriptCore/assembler/MacroAssemblerRISCV64.h: (JSC::MacroAssemblerRISCV64::supportsCountPopulation): Canonical link: https://commits.webkit.org/267560@main Commit: 2b0a1e382b366437f13f29123abbb4f0ea9dd8a2 https://github.com/WebKit/WebKit/commit/2b0a1e382b366437f13f29123abbb4f0ea9dd8a2 Author: Akihiro Kiuchi <akihiro.kiu...@sony.com> Date: 2023-09-08 (Fri, 08 Sep 2023) Changed paths: M Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp M Source/WebCore/platform/graphics/texmap/BitmapTextureGL.h M Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp M Source/WebCore/platform/graphics/texmap/TextureMapperGL.h M Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp Log Message: ----------- Cherry-pick 267599@main (499bdf98d4a7). https://bugs.webkit.org/show_bug.cgi?id=261022 Move filter specific code from BitmapTextureGL to TextureMapperGL. https://bugs.webkit.org/show_bug.cgi?id=261022 Reviewed by Fujii Hironori. This is a preparation refactoring for https://bugs.webkit.org/show_bug.cgi?id=231653. To fix the issue above, we have to change the number of passes needed to do blur filtering according to the standard deviation of the blur. Now the number of passes for each filter is specified in BitmapTextureGL.cpp but other parameters regarding filtering such as shader options are specified in TextureMapperGL.cpp, which leads to the inconsistency and low readability. This change moves filter specific code from BitmapTextureGL.cpp to TextureMapperGL.cpp * Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp: (WebCore::BitmapTextureGL::applyFilters): (WebCore::getPassesRequiredForFilter): Deleted. * Source/WebCore/platform/graphics/texmap/BitmapTextureGL.h: (WebCore::BitmapTextureGL::FilterInfo::FilterInfo): (WebCore::BitmapTextureGL::setFilterInfo): * Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp: (WebCore::TextureMapperGL::drawTexture): (WebCore::TextureMapperGL::drawTexturePlanarYUV): (WebCore::TextureMapperGL::drawTextureSemiPlanarYUV): (WebCore::TextureMapperGL::drawTexturePackedYUV): (WebCore::TextureMapperGL::drawFilterPass): (WebCore::getPassesRequiredForFilter): (WebCore::TextureMapperGL::applyFilter): (WebCore::TextureMapperGL::drawFiltered): Deleted. * Source/WebCore/platform/graphics/texmap/TextureMapperGL.h: * Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp: (WebCore::TextureMapperLayer::paintIntoSurface): Canonical link: https://commits.webkit.org/267599@main Commit: e9cc37c74045a5ceaa356c37802b1dbddaec0775 https://github.com/WebKit/WebKit/commit/e9cc37c74045a5ceaa356c37802b1dbddaec0775 Author: Akihiro Kiuchi <akihiro.kiu...@sony.com> Date: 2023-09-08 (Fri, 08 Sep 2023) Changed paths: M Source/WebCore/platform/graphics/texmap/BitmapTextureGL.h M Source/WebCore/platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp M Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp M Source/WebCore/platform/graphics/texmap/TextureMapperGL.h M Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp M Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.cpp M Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp M Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h Log Message: ----------- Cherry-pick 267646@main (57b05d82091b). https://bugs.webkit.org/show_bug.cgi?id=261101 [TextureMapper] Shrink texture before applying large radius blur https://bugs.webkit.org/show_bug.cgi?id=261101 Reviewed by Fujii Hironori. As Bug231653 pointed out, current blurring causes a mosaic artifacts when the blur radius is large. This is because the size of kernel for gaussian blur is fixed and the implementation just expanded the kernel according to the blur radius. So the radius is too large, kernel size is smaller than the number of pixels which should be convolved in a pixel, that is there are unsampled pixels between the pixels that the adjacent elements of the kernel sample. This periodical missing of pixels leads to the mosaic artifact. This fix first shrinks the texture so that there is no gap between kernel elements, and aligns the kernel elements to pixels precisely. * Source/WebCore/platform/graphics/texmap/BitmapTextureGL.h: (WebCore::BitmapTextureGL::FilterInfo::FilterInfo): * Source/WebCore/platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp: (WebCore::TextureMapperGCGLPlatformLayer::paintToTextureMapper): * Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp: (WebCore::optionsForFilterType): (WebCore::blurRadiusToKernelHalfSize): (WebCore::kernelHalfSizeToBlurRadius): (WebCore::gauss): (WebCore::computeGaussianKernel): (WebCore::prepareFilterProgram): (WebCore::TextureMapperGL::drawTexture): (WebCore::TextureMapperGL::drawTexturePlanarYUV): (WebCore::TextureMapperGL::drawTextureSemiPlanarYUV): (WebCore::TextureMapperGL::drawTexturePackedYUV): (WebCore::TextureMapperGL::drawTextureCopy): (WebCore::TextureMapperGL::drawBlurred): (WebCore::TextureMapperGL::applyBlurFilter): (WebCore::TextureMapperGL::applyDropShadowFilter): (WebCore::TextureMapperGL::applySinglePassFilter): (WebCore::TextureMapperGL::applyFilter): (WebCore::gaussianKernel): Deleted. (WebCore::TextureMapperGL::drawFilterPass): Deleted. (WebCore::getPassesRequiredForFilter): Deleted. * Source/WebCore/platform/graphics/texmap/TextureMapperGL.h: * Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp: (WebCore::TextureMapperPlatformLayerBuffer::paintToTextureMapper): * Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.cpp: (WebCore::TextureMapperPlatformLayerProxyDMABuf::DMABufLayer::paintToTextureMapper): * Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp: (WebCore::TextureMapperShaderProgram::create): * Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h: Canonical link: https://commits.webkit.org/267646@main Commit: 59e6e67d6b8b2dcac0ca3f39e75426f58576af4a https://github.com/WebKit/WebKit/commit/59e6e67d6b8b2dcac0ca3f39e75426f58576af4a Author: Akihiro Kiuchi <akihiro.kiu...@sony.com> Date: 2023-09-08 (Fri, 08 Sep 2023) Changed paths: M Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp M Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp M Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h Log Message: ----------- Cherry-pick 267687@main (14f7f3375957). https://bugs.webkit.org/show_bug.cgi?id=261187 [TextureMapper] Do texture transformation in vertex shader when copying texture https://bugs.webkit.org/show_bug.cgi?id=261187 Reviewed by Fujii Hironori. With the current implementation, transformation of texture coordinate is performed in a fragment shader when copying texture or applying blur. This change will move the transformation to vertex shader for better performance. * Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp: (WebCore::TextureMapperGL::drawTextureCopy): (WebCore::TextureMapperGL::drawBlurred): * Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp: * Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h: Canonical link: https://commits.webkit.org/267687@main Commit: d3d4dad6e880a4dbd23b146992d10f30cbae1edd https://github.com/WebKit/WebKit/commit/d3d4dad6e880a4dbd23b146992d10f30cbae1edd Author: Akihiro Kiuchi <akihiro.kiu...@sony.com> Date: 2023-09-08 (Fri, 08 Sep 2023) Changed paths: M Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp M Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp M Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h Log Message: ----------- Cherry-pick 267715@main (437b5540d082). https://bugs.webkit.org/show_bug.cgi?id=261102 [TextureMapper] Use linear sampling when blurring for better performance https://bugs.webkit.org/show_bug.cgi?id=261102 Reviewed by Fujii Hironori. To reduce the GPU load for gaussian blur, this fix reduces the size of kernel use for the blur. By adjusting the position(offset) to sample the texture and the weight of each element of the kernel so that the linear interpolation during texture sampling samples two texels and properly weights them, we can reduce the size of the kernel without changing behaviour. * Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp: (WebCore::kernelHalfSizeToSimplifiedKernelHalfSize): (WebCore::computeGaussianKernel): (WebCore::TextureMapperGL::drawBlurred): * Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp: * Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h: Canonical link: https://commits.webkit.org/267715@main Compare: https://github.com/WebKit/WebKit/compare/7ea615c41bcd...d3d4dad6e880 _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes