WebGL2 tests + Optimus GPU + Angle = gl renderer not recognized |
||
Issue description
Running chromium with `--use-gl=angle` and looking at chrome://gpu works fine (output in attachments), the Intel GPU gets recognized (the second one was an nvidia) and WebGL works.
However, when I try to run the webgl2 conformance tests with `--use-gl=angle`, I get this on the output:
GPU device 0: VENDOR = 0x10de (Nvidia), DEVICE = 0x13d8
GPU device 1: VENDOR = 0x8086 (Intel), DEVICE = 0x416
GPU Attributes:
adapter_luid : 0.0
amd_switchable : False
basic_info_state : 1
can_lose_context : True
context_info_state : 3
direct_rendering : True
driver_date :
driver_vendor :
driver_version :
gl_extensions :
gl_renderer :
gl_reset_notification_strategy: 0
gl_vendor :
gl_version :
gl_ws_extensions :
gl_ws_vendor :
gl_ws_version :
in_process_gpu : False
initialization_time : 0.119291
jpeg_decode_accelerator_supported: False
lenovo_dcute : False
max_msaa_samples :
optimus : True
pixel_shader_version:
process_crash_count : 0
sandboxed : True
software_rendering : False
vertex_shader_version:
video_decode_accelerator_flags: 0
All the tests fail because they cannot get the context.
I'm running the tests with `--extra-browser-args="--use-gl=angle" --webgl2-only=true --webgl-conformance-version=2.0.0 -v`.
Running it with just `--extra-browser-args="--use-gl=angle" -v` (i.e. just webgl1) works fine, it prints:
gl_renderer : ANGLE (Intel Open Source Technology Center Mesa DRI Intel(R) Haswell Mobile OpenGL 3.3 core)
gl_reset_notification_strategy: 0
gl_vendor : Google Inc.
gl_version : OpenGL ES 2.0 (ANGLE 2.1.0.250062bc7fd3)
gl_ws_extensions : EGL_KHR_create_context EGL_KHR_get_all_proc_addresses
gl_ws_vendor :
gl_ws_version : 1.4 (ANGLE 2.1.0.250062bc7fd3)
in_process_gpu : False
initialization_time : 0.122877
jpeg_decode_accelerator_supported: False
lenovo_dcute : False
max_msaa_samples : 8
optimus : True
pixel_shader_version: 1.00
process_crash_count : 0
sandboxed : True
software_rendering : False
vertex_shader_version: 1.00
video_decode_accelerator_flags: 0
I find it a bit weird though that it only recognizes OpenGL ES 2.0 when glxinfo reports that 3.0 is supported.
,
May 31 2016
I have tried using the --enable-unsafe-es3-apis before, it didn't make any difference. I tried it again, I still don't get an empty gl_renderer.
,
Jun 1 2016
There are Linux Intel bots on https://build.chromium.org/p/chromium.gpu.fyi/console and they are running ES 3.0 successfully.
,
Jun 1 2016
Sorry, meant to say: please debug this further on your side. It is definitely possible to get Chrome's ES 3.0 support working on Intel GPUs.
,
Jun 1 2016
A number of things in no specific order. Chrome uses the default "ANGLE platform", letting ANGLE decide how it wants to create its backing context. Currently we try to get a desktop context before even trying to get a ES context, so it did not even try to use the ES 3 context provided by Mesa. Looking at your GLXinfo output, it seems like ES3 should be supported. If you want to investigate more why ANGLE doesn't seem to support ES3, you can put a breakpoint in third_party/angle/src/libANGLE/renderer/gl/renderergl_utils.cpp in GenerateCaps where we decide which version of ES is supported. We recently decided that WebGL2 would most certainly have to ship without ANGLE enabled on Linux so I think it would be a better use of your time to try to get ES3 enabled on Intel on Chrome without ANGLE. I ported some ANGLE code over so that Chrome is able to create a 3.3 core profile context and geofflang is porting core profile workarounds from ANGLE to Chrome. |
||
►
Sign in to add a comment |
||
Comment 1 by kbr@chromium.org
, May 24 2016Components: -Internals>GPU>Testing Blink>WebGL
Owner: kbr@chromium.org
Status: WontFix (was: Untriaged)