gl: route feathers to atlas on Mali-G52 to avoid PLS corruption#105
Open
harrynron wants to merge 1 commit into
Open
gl: route feathers to atlas on Mali-G52 to avoid PLS corruption#105harrynron wants to merge 1 commit into
harrynron wants to merge 1 commit into
Conversation
|
What is the version of the driver used in this case and is the problem unique to G52 or common to other variants of ARM Mali? Is this reproducible with the Mali DDK driver for the G52? |
chealy
reviewed
Jun 4, 2026
| // storage when rendering a complex feather. For now, feather directly | ||
| // to the screen on PowerVR; always go offscreen. | ||
| // PowerVR (Vivo Y21, Rogue GE8320; OpenGL ES 3.2 build 1.13@5776728a) | ||
| // and Mali-G52 (Panfrost, e.g. MediaTek MT8169) hit a reset condition |
There was a problem hiding this comment.
This should list the specific driver version.
|
For the reproduction step, please detail specific method of reproducing the failure. Is there a test app that uses rive that can reproduce this? If so, please document here. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
On Mali-G52 (Panfrost driver, e.g. MediaTek MT8169), shapes rendered with a
feather come out with corrupted/fringed edges, and the corruption can spread to
other geometry rendered in the same pixel-local-storage (PLS) pass.
Root cause
When a complex feather is rasterized directly into pixel local storage (the
CoverageType::pixelLocalStoragepath selected inPathDraw::SelectCoverageType),the Mali-G52 driver corrupts the PLS planes. This is the same class of failure
already documented and worked around for PowerVR in
RenderContextGLImpl(
alwaysFeatherToAtlas). Small feathers are unaffected because they alreadyroute to the atlas via the
atlasScaleFactor <= 0.5check; only larger feathersfall through to the direct-to-PLS path.
Fix
Extend the existing
alwaysFeatherToAtlasworkaround (previously PowerVR-only) toMali-G52, forcing feathers through the offscreen atlas instead of PLS.
Verification
Reproduced on a Mali-G52 device. The corruption is deterministic and appears only
on frames that render a feather; feather-free frames are unaffected. Setting
alwaysFeatherToAtlas = trueeliminates the corruption, confirmed with anon-device build.