New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 614376 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
OOO until 2019-01-24
Closed: May 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 3
Type: Bug



Sign in to add a comment

WebGL2 tests + Optimus GPU + Angle = gl renderer not recognized

Project Member Reported by martina....@intel.com, May 24 2016

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.
 
gpu-angle.html
45.0 KB View Download
glxinfo.txt
23.2 KB View Download

Comment 1 by kbr@chromium.org, May 24 2016

Cc: zmo@chromium.org
Components: -Internals>GPU>Testing Blink>WebGL
Owner: kbr@chromium.org
Status: WontFix (was: Untriaged)
Currently, the browser flag --enable-unsafe-es3-apis is needed to enable the creation of ES 3.0 and WebGL 2.0 contexts. This is working as intended.

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.

Comment 3 by kbr@chromium.org, Jun 1 2016

Cc: cwallez@chromium.org
There are Linux Intel bots on https://build.chromium.org/p/chromium.gpu.fyi/console and they are running ES 3.0 successfully. 

Comment 4 by kbr@chromium.org, 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.

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