[Bug] Display corruption occurs when WebRender is enabled
Categories
(Core :: Graphics: WebRender, defect, P3)
Tracking
()
People
(Reporter: kbrosnan, Assigned: jnicol)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
47 bytes,
text/x-phabricator-request
|
RyanVM
:
approval-mozilla-release+
|
Details | Review |
From github: https://github.com/mozilla-mobile/fenix/issues/16469.
Steps to reproduce
- Go to
about:config
- Click on the search input
- Write something on the search input (in my case - screenshot - I wrote
Webrender
)Expected behavior
The cursor in the input to flash and the text to appear without any corruption.
Actual behavior
Display corruption occurs, showing weird rectangles when the cursor is flashing (after step 2):
and garbled text (after step 3):
Workaround
By setting
gfx.webrender.force-disabled
totrue
, the issue does not occur, as it falls back to using OpenGL instead of WebRender.Device information
- Android device: Samsung Galaxy S20 Ultra (Exynos 990 / Mali-G77 MP11)
- Fenix version: Firefox Nightly 84.0a1; Build ID20201106093443
Extra notes
This issue occurs on almost every website, especially when writing on inputs, but also when interacting with other elements. In the screenshot below, the text became like that after I clicked the "Copy text to clipboard" button.
When using Firefox Nightly 84.0a1 Build ID20201105045247, the issue does not occur (WebRender is enabled according to the
about:support
page).Not sure if it helps, but here is the text from the
about:support
page for the 20201105045247 build (the one that works as expected) and the 20201106093443 build (the one where the issue occurs).Using an Xperia XZ2 Compact (Qualcomm SDM845 / Adreno 630) with the same Build ID20201106093443, this issue does not occur (WebRender is enabled according to the
about:support
page).
Change performed by the Move to Bugzilla add-on.
Assignee | ||
Comment 1•4 years ago
|
||
I think this was likely regressed by bug 1675159. Mozregression managed to give this range, although it wasn't cooperating with the reporter to narrow it down further. The reporter mentions that enabling gfx.webrender.debug.gpu-cache
made it so that the bug did not reproduce, and partial present is disabled when the debug overlay is enabled. The video the reporter shared also plausibly looks like a partial present issue, even though the screenshots looked more like texture/gpu cache corruption.
Reporter's device is a Mali-G77. I cannot reproduce on any of my devices, including a Mali-G72.
Glenn, can you think of any functional changes the refactoring could have introduced?
Possible bugs could be:
- Damage region tracking incorrect, due to a different buffer age value than before, or perhaps calling
BufferDamageTracker::push_dirty_rect()
with a different value or skipping calling it for a present. - Not querying the buffer age before calling
eglSetDamageRegion
is undefined. - Calling eglSetDamageRegion more than once per present is undefined.
- Perhaps draw_previous_partial_present_regions is false, or not being honoured.
Assignee | ||
Updated•4 years ago
|
Updated•4 years ago
|
Assignee | ||
Comment 2•4 years ago
|
||
User reports the bug no longer reproduces after yesterday's play store update. I don't think there were any further changes to this code... so maybe it's not partial present related after all (or it's due to something very subtle).
Comment 3•4 years ago
|
||
OK. Yea, it seems unlikely to be that patch, but if it's something very subtle / timing related it might be. Let me know if you see any more reports of it.
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Comment 4•3 years ago
|
||
Update from github: the reporter says the bug has recently started occurring again, and found this regression range: https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=d22dc65be538930b205704bb8026dd7dfd51a833&tochange=98c926d9289f5c45565a3a157971b46f98210133
Bug 1676390 seems the most likely in there. It doesn't really make any sense at all, but I guess we're dealing with a subtle issue here. I am concerned because that has just been uplifted to beta.
The user also confirmed that disabling partial present (gfx.webrender.max-partial-present-rects=0
) fixes the issue, confirming my suspicion in comment 1 that it was related to partial present. (Because enabling a debug overlay, which causes partial present to be disabled, made the issue go away)
cc Jim and Ryan. Should we uplift a patch to disable partial present on Android to beta? Or just for Mali-Gxx? Or just Mali-G77 (the reporter's device)? FTR I cannot reproduce on non-Mali or Mali-G72.
Jim, should I order myself a Mali-G77 to investigate further?
Comment 5•3 years ago
|
||
(In reply to Jamie Nicol [:jnicol] from comment #4)
cc Jim and Ryan. Should we uplift a patch to disable partial present on Android to beta? Or just for Mali-Gxx? Or just Mali-G77 (the reporter's device)? FTR I cannot reproduce on non-Mali or Mali-G72.
Can you please attach a patch for this and get it reviewed and nominated for release approval? If we do end up taking this in an RC respin, it would be good to have the patch ready to go ASAP.
Assignee | ||
Comment 6•3 years ago
|
||
Due to rendering issues reported on a Mali-G77, disable partial
present on all Mali-Gxx devices.
Updated•3 years ago
|
Pushed by jnicol@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/d75f7d0a6d52 Disable webrender partial present on Mali-Gxx. r=aosmond
Assignee | ||
Comment 8•3 years ago
|
||
Comment on attachment 9192170 [details]
Bug 1676474 - Disable webrender partial present on Mali-Gxx. r?aosmond
Beta/Release Uplift Approval Request
- User impact if declined: Rendering artefacts on some Mali-Gxx devices
- Is this code covered by automated tests?: Yes
- Has the fix been verified in Nightly?: No
- Needs manual test from QE?: No
- If yes, steps to reproduce:
- List of other uplifts needed: None
- Risk to taking this patch: Low
- Why is the change risky/not risky? (and alternatives if risky): Disables minor webrender feature, which makes us use simpler compositing path in webrender.
- String changes made/needed:
Assignee | ||
Comment 9•3 years ago
|
||
For "Has the fix been verified in Nightly?": technically no, but the reporter has confirmed that disabling the pref that this patch disables fixes the issue.
Comment 10•3 years ago
|
||
bugherder |
Comment 11•3 years ago
|
||
Just for info - i have device with Mali G71 and on Firefox 84.0b9 with Webrender and partial present enabled i dont see any glitches mentioned in this bug.
Assignee | ||
Comment 12•3 years ago
|
||
Me neither on a Mali-G72. It has only been confirmed on a G77, but we decided to disable the feature temporarily on all Gxx as a precaution.
Assignee | ||
Comment 13•3 years ago
|
||
We've just had another user report seeing this bug. On 84.1.0-rc1, also with a Mali-G77.
https://github.com/mozilla-mobile/fenix/issues/13153#issuecomment-742159588
Comment 14•3 years ago
|
||
Comment on attachment 9192170 [details]
Bug 1676474 - Disable webrender partial present on Mali-Gxx. r?aosmond
Approved for 84.0rc2. This should be fixed in the final Fenix 84.1.0 release.
Comment 15•3 years ago
|
||
bugherder uplift |
Description
•