Open Bug 1488275 Opened 3 years ago Updated 8 months ago

WebGL creation failed: Requires vertex_array_object. Exhausted GL driver options on Samsung Galaxy S2 and S3

Categories

(Core :: Canvas: WebGL, defect, P5)

61 Branch
ARM
Android
defect

Tracking

()

People

(Reporter: jujjyl, Unassigned)

References

Details

(Keywords: regression)

I have a few old Android devices in my hardware test catalog that run GLES 2.0 content fine when building a native APK of a 3D engine I am working on. When porting the same 3D engine over with Emscripten to WebGL 1, they surprisingly fail to run in Firefox.

Checking out Firefox about:support on those devices says that WebGL support is not enabled, WebGL 1 Driver Renderer field states

> WebGL creation failed
> * Requires vertex_array_object.
> * Exhausted GL driver options.

The affected devices are

Samsung Galaxy S3 GT-I9305 (May 2012)
Display: 720x1280, 9:16, 4.8", 306ppi
Chipset: Samsung Exynos 4 Quad 4412, 32nm
CPU: 1400 MHz ARM Cortex-A9, 32bit, ARMv7-A, VFPv3, NEON (64-bit wide), 4 cores
GPU: ARM Mali-400 MP4, 4 shader cores, 440 MHz, OpenGL ES 2.0
RAM: 2GB, 400 MHz
OS: Android 4.4.4 KitKat

Samsung Galaxy S2 Plus GT-I9105P (February 2013)
Display: 480x800, 3:5, 4.3", 217ppi
Chipset: Broadcom BCM28155, 40nm
CPU: 1200MHz ARM Cortex-A9, 32bit, ARMv7-A, VFPv3, NEON (64-bit wide), 2 cores, 32KB L1D, 32KB L1I, 1MB L2 cache
GPU: Broadcom VideoCore IV, OpenGL ES 2.0
RAM: 1GB, 400MHz
OS: Android 4.2.2 Jelly Bean

Samsung Galaxy Trend Plus, GT-S7580 (December 2013)
Display: 480x800, 3:5, 4.0", 233ppi
Chipset: Broadcom BCM28155(?), 40nm(?)
CPU: 1200MHz ARM Cortex-A9, 32bit, ARMv7-A, VFPv3, NEON (64-bit wide), 2 cores, 32KB L1D, 32KB L1I, 1MB L2 cache
GPU: Broadcom VideoCore IV, OpenGL ES 2.0
RAM: 768 MB
OS: Android 4.2.2 Jelly Bean

that all fail the same way, tested on latest Firefox 61.0.2.

The error message is odd because WebGL 1 / GLES 2.0 does not require VAO support in core, but it is an extension to WebGL 1: https://www.khronos.org/registry/webgl/extensions/OES_vertex_array_object/ . I wonder if it is an oversight that WebGL 1 is not enabled if VAO support is lacking? Or does Firefox WebGL support inherently need VAOs in order to function? If so, any chance it would be easy to drop the VAO requirement?
Another device that fails WebGL due to vertex_array_object extension not being supported:

Samsung Galaxy Xcover 2 GT-S7710 (March 2013)
Display: 480x800, 3:5, 4.0", 233ppi
Chipset: NovaThor
CPU: Dual-core 1.0 GHz Cortex-A9
GPU: Mali-400
RAM: 1GB
OS: Android OS 4.1.2

Looking through the codebase, this seems to be a regression from a year ago 17 Jul 2017, in this commit:

https://hg.mozilla.org/mozilla-central/rev/0a7ed67195b4
Bug 1322746 - Support PLANAR_YCBCR, GPU_VIDEO, and D3D11_YCBCR_IMAGE in GLBlitHelper.

which added unconditional requirement for WebGL 1 contexts to have VAO.

(For comparison, on the four above devices, WebGL 1 does work in latest Android Chrome browser, although Chrome seems to have a bug with handling preserveDrawingBuffer=false context creation attribute on Xcover 2)
Blocks: 1322746
Flags: needinfo?(jgilbert)
Keywords: regression
Priority: -- → P3
I added this requirement because support is so pervasive, and it's the cleanest way to implement our GLBlitHelper code.

We can think about relaxing this, but I don't think the volume of users for these older devices is that high.
Flags: needinfo?(jgilbert)
Priority: P3 → P5

the volume of users for these older devices is that high.
But for them it makes quite a difference. So if it's just a small change, why not?

You need to log in before you can comment on or make changes to this bug.