If you think a bug might affect users in the 57 release, please set the correct tracking and status flags for Release Management.

After the Flood WebGL 2 demo renders incorrectly on ARM Mali Android GPU devices on Medium graphics quality and higher.




Canvas: WebGL
4 months ago
4 months ago


(Reporter: Jukka Jylänki, Unassigned, NeedInfo)


55 Branch

Firefox Tracking Flags

(Not tracked)


(Whiteboard: [gfx-noted])


(6 attachments)



4 months ago
STR: https://playcanv.as/e/p/44MRmJRU/

If running After the Flood demo on Very Low or Low graphics quality on Firefox for Android on an ARM Mali device (tested on Huawei P10 Plus), it renders properly.

However if upping the graphics quality to Medium or higher, the rendering becomes corrupt, with most geometry missing.

(The above URL has a popup check to yell if attempting to run on a mobile device, fetch the desktop version of the page to avoid, or use via emunittest, which has the popup removed and easy to run links for different graphics quality levels)

Comment 1

4 months ago
Created attachment 8867752 [details]
Incorrect missing geometry, only skybox rendering

Comment 2

4 months ago
Created attachment 8867754 [details]
Landscape orientation

Comment 3

4 months ago
Created attachment 8867756 [details]
When geometry does render, it is oddly dithered and missing parts.

Comment 4

4 months ago
I was trying to triage this by running the WebGL conformance suite on the device in the hopes that it would already highlight the cause of the glitch without the need to dive in to difficult GL bug hunt. That attempt is being made difficult by the following two issues

  - https://bugzilla.mozilla.org/show_bug.cgi?id=1362320: https://bugzilla.mozilla.org/show_bug.cgi?id=1362320: Crash in libGLES_mali_v2.so@0x65a4d8 in WebGL 2 conformance test deqp/data/gles3/shaders/arrays
  - https://bugzilla.mozilla.org/show_bug.cgi?id=1362319: Firefox hangs on uniform buffer WebGL 2 conformance tests on ARM Mali-G71 MP8 (on a Huawei P10 Plus)

which are preventing the WebGL 2 conformance suite from finishing on the device. So it might make sense to attempt to resolve those first, which might unblock finding clues to this bug.
Priority: -- → P3
Whiteboard: [gfx-noted]

Comment 5

4 months ago
Updated STR:

1. visit: http://clb.demon.fi/t/2017-02-08-AfterTheFlood/?quality=medium_shadows&hidemenu

which should render properly.

2. then visit: http://clb.demon.fi/t/2017-02-08-AfterTheFlood/?quality=verylow_high_shadows&hidemenu

which shows the graphical artifacts.

Affected devices:
 - Samsung Galaxy S7 Edge SM-G935F - Android 7.0, Kernel 3.18.14-11104523 (NRD90M), Fennec 55.0a1 (2017-05-19), ARM Mali-T880, OpenGL ES 3.2 v1.r12p1-03dev0.228ab63cced004f840e7dd47b762a1d0

 - Huawei P10 Plus - Android 7.0, Kernel 4.1.18-gfd75bbb (VKY-L29), Fennec 55.0a1 (2017-05-19) - ARM Mali-G71, OpenGL ES 3.2 v1.r2p0-02dev0.f7269486f3e0e3b308edf85872e361f4

Tested to be unaffected (when the device does not crash):
 - Google Pixel XL - Android 7.1.2, Kernel 3.18.31-g416bf43 (marlin N2G47O), Fennec 55.0a1 (2017-05-19) - Qualcomm Adreno 530, OpenGL ES 3.2 V@145.0 (GIT@Idb2b4cb785)

Comment 6

4 months ago
Created attachment 8870815 [details]

Correct rendering from Google Pixel XL (when the device does not crash, bug 1367417)

Comment 7

4 months ago
Created attachment 8870816 [details]

Incorrect rendering on a Huawei P10 Plus (S7 Edge has the same glitch)

Comment 8

4 months ago
To add to comment 5, the only difference between medium_shadows and verylow_high_shadows is that in the first mode, shadowQuality is set to DEMOSETTING_MEDIUM, whereas in the second mode, it is set to DEMOSETTING_HIGH.

Comment 9

4 months ago
Created attachment 8872418 [details]

Here is a minimal test case to reproduce. This works on desktop, but fails on ARM Mali with an error

> uncaught exception: could not compile shader:0:5: S0032: no default precision defined for parameter 'webgl_33955952fa6dcc32'

Jeff, does this look like a bug in shader translation rather than with ARM Mali GPU drivers?
Flags: needinfo?(jgilbert)
You need to log in before you can comment on or make changes to this bug.