No WebGL support for Meizu Pro 5

Bug #1590158 reported by Michael
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Oxide
Undecided
Unassigned

Bug Description

When checking the webbrowser-app capabilities at html5test.com or get.webgl.org there is no WebGL support or it has been disabled.

For the bq E5 HD WebGL is working with the same webbrowser-app version.

Is the WebGL support intentionally disabled because of instable graphics drivers, bugs etc...?

What is the plan to support WebGL for the Meizu Pro 5? More and more JavaScript visualization tools make use of WebGL and the GPU instead of svg/dom or canvas for performance reasons the same way as browser games.

It would be really a shame if the highend/convergence Ubuntu phone model can't support this.

phablet@ubuntu-phablet:~$ system-image-cli -i
current build number: 3
device name: turbo
channel: ubuntu-touch/stable/meizu.en
last update: 2014-04-09 09:28:38
version version: 3
version ubuntu: 20160524.1
version tag: OTA-11
version device: 20160509-cc15395
version custom: 20160504-945-18-69

Revision history for this message
Olivier Tilloy (osomon) wrote :

I don’t have a Pro 5 so can’t verify. Michael, if you open the browser and go to "chrome://gpu", what does it say for WebGL support?

affects: webbrowser-app (Ubuntu) → oxide
tags: added: webgl
Revision history for this message
Michael (mick3-de) wrote :
Download full text (5.0 KiB)

Graphics Feature Status
Canvas: Hardware accelerated
Flash: Hardware accelerated
Flash Stage3D: Hardware accelerated
Flash Stage3D Baseline profile: Hardware accelerated
Compositing: Hardware accelerated
Multiple Raster Threads: Enabled
Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
Rasterization: Software only. Hardware acceleration disabled
Video Decode: Hardware accelerated
Video Encode: Software only. Hardware acceleration disabled
WebGL: Unavailable
Driver Bug Workarounds
clear_uniforms_before_first_program_use
max_texture_size_limit_4096
scalarize_vec_and_mat_constructor_args
use_client_side_arrays_for_stream_buffers
use_virtualized_gl_contexts
Problems Detected
WebGL is disabled on Android unless the GPU runs in a separate process or reset notification is supported
Disabled Features: webgl
MediaCodec is still too buggy to use for encoding (b/11536167)
Disabled Features: accelerated_video_encode
ARM driver doesn't like uploading lots of buffer data constantly
Applied Workarounds: use_client_side_arrays_for_stream_buffers
The Mali-Txxx driver does not guarantee flush ordering: 154715, 10068, 269829, 294779, 285292
Applied Workarounds: use_virtualized_gl_contexts
Clear uniforms before first program use on all platforms: 124764, 349137
Applied Workarounds: clear_uniforms_before_first_program_use
Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args
Limit max texure size to 4096 on all of Android
Applied Workarounds: max_texture_size_limit_4096
Accelerated video encode has been disabled, either via about:flags or command line.
Disabled Features: video_encode
Accelerated rasterization has been disabled, either via about:flags or command line.
Disabled Features: rasterization
Native GpuMemoryBuffers have been disabled, either via about:flags or command line.
Disabled Features: native_gpu_memory_buffers
Version Information
Data exported 9.6.2016, 10:57:31
Chrome version
Operating system Linux 3.10.100-user-01767-gf5aa556
Software rendering list version 10.18
Driver bug list version 8.59
ANGLE commit id unknown hash
2D graphics backend Skia
Command Line Args --browser-subprocess-path=/usr/lib/arm-linux-gnueabihf/oxide-qt/oxide-renderer --in-process-gpu --disable-gpu-shader-disk-cache --disable-gpu-early-init --ui-prioritize-in-gpu-process --enable-smooth-scrolling --use-gl=egl --disable-namespace-sandbox --form-factor=phone --enable-viewport --main-frame-resizes-are-orientation-changes --enable-pinch --enable-overlay-scrollbar --disable-gpu-watchdog --use-gl=egl --supports-dual-gpus=false --gpu-driver-bug-workarounds=4,43,53,63,66 --disable-webrtc-hw-encoding --gpu-vendor-id=0x0000 --gpu-device-id=0x0000 --gpu-driver-vendor --gpu-driver-version
Driver Information
Initialization time 0
In-process GPU true
Sandboxed false
GPU0 VENDOR = 0x0000, DEVICE= 0x0000
Optimus false
AMD switchable false
Driver vendor
Driver version
Driver date
Pixel shader version 3.10
Vertex shader version 3.10
Max. MSAA samples 8
Machine model name Pro5 Ubuntu Edition
Machine model version
GL_VENDOR ARM
GL_RENDERER Mali-T760
GL_VERSION OpenGL ES 3.1
GL_EXTENSIONS GL_EXT_debug_m...

Read more...

Revision history for this message
Olivier Tilloy (osomon) wrote :

This is relevant:

Problems Detected
WebGL is disabled on Android unless the GPU runs in a separate process or reset notification is supported
Disabled Features: webgl

Partially related: bug #1553302.

Changed in oxide:
status: New → Confirmed
Revision history for this message
Michael (mick3-de) wrote :

So oxide has no separate GPU process yet but that reset notification support works for some GPUs as for the BQ E5 tha's why there's WebGL enabled ?

Would this be also a stop-gap solution for the Mali-T760 until there are general implementations for a separate GPU process and maybe hardware rasterization support as well as native GpuMemoryBuffers?

A good overview how Chromium does WebGL using separate GPU process:
https://01.org/chromium/blogs/webgl-chromium-behind-scenes

Revision history for this message
Olivier Tilloy (osomon) wrote :

Yes, that’s correct, the Pro 5 doesn’t appear to support reset notification. From your output of chrome://gpu:

    Reset notification strategy 0x0000

On my E4.5 however:

    Reset notification strategy 0x8252

I’m not familiar with GPU drivers and reset notification, so I’m not sure why it’s not supported on the Pro5, but it looks like for those devices where it’s not supported we’re gonna need a separate GPU process.

Revision history for this message
Michael (mick3-de) wrote :

From https://bugs.chromium.org/p/chromium/issues/detail?id=476950

(Samsung Galaxy S6 Mali-T760)

"...ARM's OpenGL ES driver doesn't support GL_EXT_robustness..."

They also mention that "webgl without reset notifications" may work.

Some workaround/ignoring the issue:

"Override software rendering list" / "ignore-gpu-blacklist flag enabled"
in "about:flags" or chrome://flags (How access this in webbrowser-app?)

https://bugs.chromium.org/p/chromium/issues/detail?id=306938
https://bugs.chromium.org/p/chromium/issues/detail?id=288731
https://bugs.chromium.org/p/chromium/issues/detail?id=416690

There is also the patch which enables WebGL the for E4.5 / E5 even without working
reset notifications:

https://chromium.googlesource.com/chromium/src.git/+/f56d21f26ff4f09f8dfe35d84d20f4ce45f45c2e

gpu: Enable WebGL on Mali-400 GPUs that support EXT_robustness

Enable WebGL on Mali-400 GPUs that support the EXT_robustness extension
but do *not* send context reset notifications. The reason we can do
this is that virtualized contexts are not used on these devices, so
badly behaving WebGL shaders do not affect other GL contexts. This means
that the user can close or reload the WebGL tab and other tabs in the
browser remain responsive.

I guess the same thing is needed for Mali-T760?

Revision history for this message
Sergi Quiles Pérez (sergiqp) wrote :

I confirm it is supported on bq Aquaris E4.5

Revision history for this message
Sergi Quiles Pérez (sergiqp) wrote :

And I confirm it is not supported on bq Aquaris M10

Revision history for this message
Michael (mick3-de) wrote :

>> So oxide has no separate GPU process yet but that reset notification support works for some GPUs
>> as for the BQ E5 Mali-400 thats why there's WebGL enabled ?
>> Would this be also a stop-gap solution for the Mali-T760 until there are general implementations
>> for a separate GPU process and maybe hardware rasterization support as well as native
>> GpuMemoryBuffers?

> https://chromium.googlesource.com/chromium/src.git/+/f56d21f26ff4f09f8dfe35d84d20f4ce45f45c2e
> gpu: Enable WebGL on Mali-400 GPUs that support EXT_robustness
>
> Enable WebGL on Mali-400 GPUs that support the EXT_robustness extension
> but do *not* send context reset notifications. The reason we can do
> this is that virtualized contexts are not used on these devices, so
> badly behaving WebGL shaders do not affect other GL contexts. This means
> that the user can close or reload the WebGL tab and other tabs in the
> browser remain responsive.
>
> I guess the same thing is needed for Mali-T760?

Any progress on this topic?

The Galaxy S6 with os 5.1.x and higher supports GL_EXT_robustness extension on the Mali-T760:

http://opengles.gpuinfo.org/gles_generatereport.php?reportID=447
Samsung Galaxy S6 (SM-G920V), os 5.0.2 -> no GL_EXT_robustness

http://opengles.gpuinfo.org/gles_generatereport.php?reportID=664
Samsung Galaxy S6 (SM-G920F) os 5.1.1-> GL_EXT_robustness

So this is a driver issue. On which Android version is the Ubuntu image based?
If it's still 5.0.x there's 5.1 "Flyme OS" from Meizu.

What about updating libGLES_mali.so from there?

Revision history for this message
Olivier Tilloy (osomon) wrote :

If my information is correct, the Pro5 (turbo) is based on AOSP android-5.1.0_r1.

Revision history for this message
Michael (mick3-de) wrote :

> If my information is correct, the Pro5 (turbo) is based on AOSP android-5.1.0_r1.

So libGLES_mali.so from "Flyme OS" 5.1.x image should be the same or at least work as the ones from other Mali-T760 phones like S6?

As "chrome://gpu" didn't show the "GL_EXT_robustness" extension I think it's worth to find out if there are different versions of that binary including one which has it.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers