[Webkit-unassigned] [Bug 219739] New: REGRESSION(r268923): [WPE] Nothing renders on the rpi3 using the proprietary driver

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Dec 10 05:46:50 PST 2020


https://bugs.webkit.org/show_bug.cgi?id=219739

            Bug ID: 219739
           Summary: REGRESSION(r268923): [WPE] Nothing renders on the rpi3
                    using the proprietary driver
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WPE WebKit
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: magomez at igalia.com
                CC: bugs-noreply at webkitgtk.org

Some of the modifications added to the fragment shader (in order to implement rounded rectangle clipping) broke the rendering on the rpi3 when using the proprietary driver. While these changes work on mesa based drivers, it seems that the proprietary driver has some limitations:

* the right operand of the condition of a for loop must be a constant, which causes the line

for (int rectIndex = 0; rectIndex < nRects; rectIndex++)

not to work because nRects is not a constant.

* can't index arrays with non constant variables, which causes things like

vec4 bounds = vec4(u_roundedRect[index].xy, u_roundedRect[index].xy + u_roundedRect[index].zw);

not to work unless index is a constant (which is not).

So we need to rewrite the code in way that allows us to overcome those limitations. The first one is easy, as we need to replace the former loop with something like this:

for (int rectIndex = 0; rectIndex < ROUNDED_RECT_MAX_RECTS; rectIndex++) {
    if (rectIndex >= u_roundedRectNumber)
    break;

    whatever;
}

This is required for the driver to be able to unwind the for loop. And this gives a way to fix the second issue: when unwinding the loop, the rectIndex var will be a constant in each of the loop steps, which allows us to use it to index the array. We need to perform all the accesses to the array with that variable though, so we can't do it inside any function.

I'll send a patch with the changes.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20201210/981f59e7/attachment.htm>


More information about the webkit-unassigned mailing list