Adreno 420 rendering errors with webrender (Android 4)
Categories
(Core :: Graphics: WebRender, defect)
Tracking
()
People
(Reporter: mike, Unassigned)
References
(Blocks 1 open bug)
Details
Attachments
(2 files)
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36
Steps to reproduce:
Upgraded GeckoView to release 89.0.20210527174632 on an Android 4.4.3 device which has the Adreno 420 GPU.
Specifically this was tracked down to the changed introduced by Bug 1703532, with this reverted, it renders correctly.
Actual results:
Rendering is not correct as seen in the attached image, fonts/text rendered as blocks/etc.
Expected results:
Expected to render with same quality as version 88.
It is actually 4.4.4:
adb shell getprop ro.build.version.release
4.4.4
db shell dumpsys | grep GLES
GLES: Qualcomm, Adreno (TM) 420, OpenGL ES 3.0 V@84.0 AU@04.04.04.066.114 (CL@)
Updated•4 years ago
|
Updated•4 years ago
|
Comment 2•4 years ago
|
||
:jnico, is it a known problem?
These may be some relevant logs (just loading google.com):
I/Gecko (11426): [GFX1-]: Failed to load a program object with a program binary: brush_image renderer Adreno (TM) 420
I/Gecko (11426): Invalid binary image passed to glProgramBinaryOES.
I/Gecko (11426):
I/Gecko (11426): [GFX1-]: shader-cache: Failed program_binary
I/Gecko (11426): [GFX1-]: Failed to load a program object with a program binary: ps_text_run renderer Adreno (TM) 420
I/Gecko (11426): Invalid binary image passed to glProgramBinaryOES.
I/Gecko (11426):
I/Gecko (11426): [GFX1-]: shader-cache: Failed program_binary
I/Gecko (11426): [GFX1-]: Failed to load a program object with a program binary: composite renderer Adreno (TM) 420
I/Gecko (11426): Invalid binary image passed to glProgramBinaryOES.
I/Gecko (11426):
I/Gecko (11426): [GFX1-]: shader-cache: Failed program_binary
I/Gecko (11426): [GFX1-]: Failed to load a program object with a program binary: composite renderer Adreno (TM) 420
I/Gecko (11426): Invalid binary image passed to glProgramBinaryOES.
I/Gecko (11426):
I/Gecko (11426): [GFX1-]: shader-cache: Failed program_binary
Comment 4•4 years ago
|
||
No, not a known issue. Although we don't see many Adreno 4xx devices with Android 4.4. (Fenix only supports Android >= 5, but geckoview does support 4.4).
Thanks for the bug report, Mike. Could you please go to the URL about:support, click on the "Copy text to clipboard" button, and attach that to this bug. (It might be hard to read, but it's the second gray button at the top of the page.) Thanks!
Comment 5•4 years ago
|
||
I don't think the errors in comment 3 are relevant. We have seen similar messages on Adreno 3xx (it must be due to driver version rather than GPU model) in bug 1615574. But we detect the error and recompile the shader in response, don't think it causes any issues.
Updated•4 years ago
|
Comment 7•4 years ago
|
||
Thanks Mike.
Could you try using the tool mozregression to determine whether this used to work correctly, and if so, what broke it. You already established that enabling webrender caused the issue, but we can force webrender to be enabled and therefore test earlier builds.
You'll need to plug the device in to a computer and have working adb access. Then on the command line you can run:
pip install --user mozregression
mozregression --app gve --good 2020-06-15 --pref 'gfx.webrender.all:true'
This will download and run a series of versions of the geckoview example app. For each one you answer good or bad, and eventually it will tell you what caused the bug. Or, it might just tell you that the first build from a year ago is already broken, and unfortunately we only keep builds for a year. Let me know if you need any help with that!
Unfortunately the earlier builds prior to seeing this all result in an ANR when webrender is enabled so it is difficult to tell.
As far as the change that takes it from an ANR to rendering with this issue is (but not sure it helps anything):
274:23.35 INFO: Narrowed integration regression window from [962540b7, 735b9a7d] (3 builds) to [5978eab7, 735b9a7d] (2 builds) (~1 steps left)
274:23.35 INFO: No more integration revisions, bisection finished.
274:23.35 INFO: Last good revision: 5978eab7b4a3964ceb73931018df219f4a5aba76
274:23.35 INFO: First bad revision: 735b9a7d79fbd5f87314b90234bf48f0f50ffa61
274:23.36 INFO: Pushlog:
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=5978eab7b4a3964ceb73931018df219f4a5aba76&tochange=735b9a7d79fbd5f87314b90234bf48f0f50ffa61
Please let me know if there is anything else I can try to help narrow it down.
Updated•4 years ago
|
While I understand this is not a priority due to the most likely the version of Android and configuration, is there a way to disable the webrender through the application code, rather than a custom build of geckoview?
Comment 10•3 years ago
|
||
I think you should be able to do that following the instructions here: https://firefox-source-docs.mozilla.org/mobile/android/geckoview/consumer/automation.html
Make a config file that sets the pref gfx.webrender.software to true, then follow the instructions under "Enabling reading configuration from a file unconditionally"
Comment 11•2 years ago
•
|
||
Closing as Geckoview's minimum android version is now Android 5 (SDK 21) as of bug 1820295
Description
•