Closed Bug 1716151 Opened 4 years ago Closed 2 years ago

Adreno 420 rendering errors with webrender (Android 4)

Categories

(Core :: Graphics: WebRender, defect)

defect

Tracking

()

RESOLVED WONTFIX

People

(Reporter: mike, Unassigned)

References

(Blocks 1 open bug)

Details

Attachments

(2 files)

Attached image gecko.png

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@)

Flags: needinfo?(jnicol)
Summary: Adreno 4XX rendering errors with webrender → Adreno 420 rendering errors with webrender

: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

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!

Flags: needinfo?(jnicol) → needinfo?(mike)

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.

Attached file about:support

about:config attached.

Flags: needinfo?(mike)
Summary: Adreno 420 rendering errors with webrender → Adreno 420 rendering errors with webrender (Android 4)

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!

Flags: needinfo?(mike)

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.

Flags: needinfo?(mike)
Severity: -- → S3

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?

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"

Closing as Geckoview's minimum android version is now Android 5 (SDK 21) as of bug 1820295

Status: UNCONFIRMED → RESOLVED
Closed: 2 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: