Box shadows are rendered as triangles on Adreno 3xx
Categories
(Core :: Graphics: WebRender, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox90 | --- | fixed |
People
(Reporter: jnicol, Assigned: jnicol)
References
(Blocks 1 open bug)
Details
Attachments
(2 files)
Box shadows are rendered as triangles on my Nexus 5, similar to images were in bug 1630356.
This is due to the flat varying float vClipMode
that is used to calculate the result in the cs_clip_box_shadow fragment shader.
In bug 1630356 we optimistically assumed the bug only affected UV coordinate calculations, but that appears to not be the case. The fix from bug 1630356 applies here too though, packing the varying in a vec2
avoids the bug.
Updated•3 years ago
|
Assignee | ||
Comment 1•3 years ago
|
||
Did a quick wrench run to see if other shaders are affected, and it seems to affect gradients and svg filters too.
Specifically v_gradient_repeat
in gradient.glsl
(shared between the various gradient shaders), and vFloat0
in cs_svg_filter.glsl
Assignee | ||
Comment 2•3 years ago
|
||
In bug 1630356 we found a driver bug on some Adreno 3xx devices where
flat scalar varyings in shaders incorrectly caused the output of every
fragment in the triangle to be calculated as if flat. To work around
the bug, we pack the scalar varyings in a vector. At the time we
believed it may be limited to varyings used to calculate UV
coordinates, however, we have now seen more cases of this bug (in box
shadows, gradients, and svg filters).
Unfortunately it is not yet clear what precise conditions are required
to trigger this bug, so for now we just apply the workaround to the
varyings we know are affected due to failing wrench tests on the device.
Updated•3 years ago
|
Pushed by jnicol@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/4589bb0b7c23 Pack more varyings in vectors to work around Adreno 3xx bug. r=kvark
Comment 4•3 years ago
|
||
bugherder |
Description
•