Closed Bug 1702960 Opened 3 years ago Closed 3 years ago

Device reporting insufficient max texture size on Adreno 330

Categories

(Core :: Graphics: WebRender, defect)

ARM
Android
defect

Tracking

()

RESOLVED FIXED
Tracking Status
firefox89 --- affected

People

(Reporter: h.winnemoeller, Unassigned)

References

(Blocks 1 open bug)

Details

Steps to reproduce

  1. (WR is rolled out on Adreno 3xx since Bug 1706267)
  2. Use the browser.

Expected result
WebRender stays active.

Actual result
Intermittently, a fallback to AL/OpenGL compositing is triggered. I was unable to pin it down to a single website. I have noticed this twice in two weeks, but only because I was checking about:support. The failure log says:

[program binary issue reporting above]

(#24) Error: Device reporting insufficient max texture size (0)
(#25) Error: wr_window_new: MaxTextureSize
(#26) Error: Failed to connect WebRenderBridgeChild.
(#27) Error: Fallback (SW-)WR to Basic
(#28) Error: Compositors might be mixed (5,2)

Device Info
Vendor and Model: Sony Xperia Z2
OS version: Android 6.0.1
GPU model: Adreno 330 (WebRender Compositing)
Number of cores: 4 (Snapdragon 801)

Fenix version
Nightly 210404 17:00 (Build #2015802697)
AC: 75.0.20210403190112, 9bd53c36f
GV: 89.0a1-20210403093157
AS: 74.0.1

What max texture size do you get here: https://webglreport.com/? Does Chrome give the same answer?

Flags: needinfo?(h.winnemoeller)

4096 for WebGL1 and WebGL2 on Fenix.
4096 for WebGL1 on Chrome, WebGL2 is blocked on Adreno 3xx on Chrome.

I have updated the STR to include the config changes I have made to the defaults of the device.

Flags: needinfo?(h.winnemoeller)

I believe telemetry shows one of the biggest reasons for android devices not getting webrender is due to this error, but I have no idea why it would occur

Henrik, one thing you could try is enabling a pref such as layers.draw-borders. This will make it super-obvious when fallback occurs as you'll see some coloured rectangles appear on the screen. That might help pin it down to a specific website causing an error.

I was welcomed today by coloured rectangles, the failure log was identical to the first reported one. The device had been in standby over night, Fenix Nightly had no open tabs and I opened Fenix and opened a single tab in private browsing mode, https://www.tagesschau.de/. After browsing for some time without restarting Fenix and still seeing the coloured rectangles, I wanted to copy the Fenix version information and Fenix crashed with OOM the moment I tried highlighting the version information. Regarding tagesschau.de: I visit this website almost every day, so maybe something changed but opening it up again with active WR did not reproduce the fallback. Maybe the fallback happens when the device is almost OOM? Here is the crash, which sounds similar to https://github.com/mozilla-mobile/fenix/issues/17756 but not the same STR:

Nightly 210412 17:03 (Build #2015804233)
AC: 75.0.20210412114437, 49f058d36
GV: 89.0a1-20210411093417
AS: 74.0.1

d9d20640-233e-40e3-8e05-65c176a15294
java.lang.OutOfMemoryError: Failed to allocate a 476868 byte allocation with 367224 free bytes and 358KB until OOM


java.lang.OutOfMemoryError: Failed to allocate a 476868 byte allocation with 367224 free bytes and 358KB until OOM
	at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
	at android.graphics.Bitmap.nativeCreate(Native Method)
	at android.graphics.Bitmap.createBitmap(Bitmap.java:831)
	at android.graphics.Bitmap.createBitmap(Bitmap.java:808)
	at android.graphics.Bitmap.createBitmap(Bitmap.java:775)
	at android.widget.MagnifierView.ensureOffsetBitmapAndCanvas(MagnifierView.java:679)
	at android.widget.MagnifierView.onDraw(MagnifierView.java:715)
	at android.view.View.draw(View.java:16270)
	at android.view.View.updateDisplayListIfDirty(View.java:15267)
	at android.view.View.draw(View.java:16040)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.updateDisplayListIfDirty(View.java:15262)
	at android.view.View.draw(View.java:16040)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
	at android.view.View.updateDisplayListIfDirty(View.java:15262)
	at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:281)
	at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:287)
	at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:322)
	at android.view.ViewRootImpl.draw(ViewRootImpl.java:2619)
	at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2438)
	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2071)
	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1111)
	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6017)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
	at android.view.Choreographer.doCallbacks(Choreographer.java:670)
	at android.view.Choreographer.doFrame(Choreographer.java:606)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
	at android.os.Handler.handleCallback(Handler.java:739)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:234)
	at android.app.ActivityThread.main(ActivityThread.java:5526)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

I have tried to narrow this down further. I exclusively use Fenix Nightly in active PBM and can report:

  • The fallback happens regardless of the opened website, at least in my cases.
  • The fallback happens even when the device reports no low memory situation in the developer options, e.g. 1 GiB of free RAM.
  • I was not able to reproduce the crash in Comment 5 after the fallback was triggered, so this might have been just a coincidence.
  • The fallback happens regardless of prior device status. The device could have recently been woken up or in use for several minutes.
  • The fallback happens regardless of Fenix prior status, completely closed or still open in background.
  • The fallback, if it is triggered, always occurs when opening a new private browsing session.
  • The fallback never happens during an active private browsing session when fenix is in the foreground.

Hi Henrik,

We were seeing a similar error message on the android emulator when running some tests, which I managed to figure out and fix. It's possible that it's unrelated and there's something device-specific about the error you're seeing, but I'm hopeful that it will fix this issue too. That was bug 1670622. Once that makes its way to nightly I'd be grateful if you could keep an eye open to see whether this still occurs!

See Also: → 1670622

Will do :) It might take a while to verify that it's not occuring anymore since even with high device usage it only happens every other day. In any case, thanks for looking after this!

I have not seen this anymore for at least three weeks since Bug 1670622 has landed in Fenix Nightly.

Great, thanks for confirming. Let's close this bug, but please re-open if you do see this occur again

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