Summary: | REGRESSION(267646@main): [TextureMapper][WPE] 2.42 doesn't render anything on the rpi3 with the proprietary drivers | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Miguel Gomez <magomez> | ||||
Component: | WPE WebKit | Assignee: | Fujii Hironori <Hironori.Fujii> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | CC: | bugs-noreply, cgarcia, Hironori.Fujii, mcatanzaro | ||||
Priority: | P2 | ||||||
Version: | WebKit Nightly Build | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
See Also: | https://bugs.webkit.org/show_bug.cgi?id=261101 | ||||||
Attachments: |
|
Description
Miguel Gomez
2023-09-21 04:06:19 PDT
I guess the shader compiler is reporting an error. You can check it by enabling debug logging. WebCoreLogging=Compositing GTK used WEBKIT_DEBUG env var. https://docs.webkit.org/Build%20%26%20Debug/Logging.html#linux Hi Miguel, can you check the debug logging and report back for Fujii please? These are the errors coming from the shader program: Program log: ERROR:OPTIMIZER-3 (fragment shader, line 48) Support for for loops is restricted : right side of condition expression must be constant Program log: ERROR:OPTIMIZER-3 (fragment shader, line 49) Support for for loops is restricted : right side of condition expression must be constant The problem seems to be the loops in the applyBlurFilter and applyAlphaBlur functions. The loop condition is i < u_gaussianKernelHalfSize, but u_gaussianKernelHalfSize is an uniform, not a constant. I guess there are some limitations to what rpi3 proprietary drivers can do. Created attachment 468928 [details]
WIP patch
It seems this is not a problem on rpi3, but a problem wiht GLES2. From the specs in https://registry.khronos.org/OpenGL/specs/es/2.0/GLSL_ES_Specification_1.00.pdf : In general, control flow is limited to forward branching and to loops where the maximum number of iterations can easily be determined at compile time. […] for loops are supported but with the following restrictions: […] The for statement has the form: for ( init-declaration ; condition ; expression ) statement […] condition has the form loop_index relational_operator constant_expression where relational_operator is one of: > >= < <= == or != When working on the desktop, eglCreate context is probably returning a GLES3 context even when we request a GLES2 one (the specs state that it may return a backwards compatible version). When this happens, the error doesn't trigger because GLES3 doesn't have the loop limitation. But the rpi3 supports GLES2 only and that's why the problem reproduces there. Fujii, the condition you're looking for in your patch is something like GLContext::current()->version() <= 200, which means that were using GLES2. But this needs to checked at runtime and not during compilation, so a change in the approach is required. Pull request: https://github.com/WebKit/WebKit/pull/21847 Committed 272287@main (767a3b1ebacc): <https://commits.webkit.org/272287@main> Reviewed commits have been landed. Closing PR #21847 and removing active labels. |