Issue metadata
Sign in to add a comment
|
ANGLE GL backend initialization fails on Windows 10 Creators Update
Reported by
oetu...@nvidia.com,
May 17 2017
|
||||||||||||||||||||||
Issue descriptionChrome Version: 60.0.3102.0 OS: Windows 10 version 1703, OS build 15063.0 (Creators Update) What steps will reproduce the problem? (1) Run chrome.exe --use-angle=gl (2) Open chrome://gpu What is the expected result? Hardware graphics acceleration works. What happens instead? Hardware graphics acceleration fails. This seems to be isolated to release builds of Chromium, on Windows 10 Creators Update. Earlier versions of Windows 10 did not reproduce the bug, and debug build of Chromium did not reproduce the bug either. Reproduced on a system with NVIDIA GeForce 1080 GPU and prerelease drivers, but latest stable driver release is expected to reproduce the bug as well. chrome://gpu: Graphics Feature Status Canvas: Software only, hardware acceleration unavailable Flash: Software only, hardware acceleration unavailable Flash Stage3D: Software only, hardware acceleration unavailable Flash Stage3D Baseline profile: Software only, hardware acceleration unavailable Compositing: Software only, hardware acceleration unavailable Multiple Raster Threads: Enabled Native GpuMemoryBuffers: Software only. Hardware acceleration disabled Rasterization: Software only, hardware acceleration unavailable Video Decode: Software only, hardware acceleration unavailable Video Encode: Software only, hardware acceleration unavailable WebGL: Hardware accelerated but at reduced performance WebGL2: Unavailable Driver Bug Workarounds clear_uniforms_before_first_program_use decode_encode_srgb_for_generatemipmap disable_discard_framebuffer disable_dxgi_zero_copy_video disable_framebuffer_cmaa exit_on_context_lost scalarize_vec_and_mat_constructor_args Problems Detected GPU rasterization should only be enabled on NVIDIA and Intel DX11+, and AMD RX-R2 GPUs for now.: 643850 Disabled Features: gpu_rasterization Some drivers are unable to reset the D3D device in the GPU process sandbox Applied Workarounds: exit_on_context_lost 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 Framebuffer discarding can hurt performance on non-tilers: 570897 Applied Workarounds: disable_discard_framebuffer Limited enabling of Chromium GL_INTEL_framebuffer_CMAA: 535198 Applied Workarounds: disable_framebuffer_cmaa Zero-copy NV12 video displays incorrect colors on NVIDIA drivers.: 635319 Applied Workarounds: disable_dxgi_zero_copy_video Disable KHR_blend_equation_advanced until cc shaders are updated: 661715 Decode and Encode before generateMipmap for srgb format textures on Windows: 634519 Applied Workarounds: decode_encode_srgb_for_generatemipmap Native GpuMemoryBuffers have been disabled, either via about:flags or command line. Disabled Features: native_gpu_memory_buffers Version Information Data exported 17.5.2017 klo 17.43.35 Chrome version Chrome/60.0.3102.0 Operating system Windows NT 10.0.15063 Software rendering list version 13.7 Driver bug list version 10.9 ANGLE commit id 995c2ed27861 2D graphics backend Skia/60 eb99bfd8588269c3d0bc9fc23d07643a2039994b- Command Line "C:\Users\oetuaho\AppData\Local\Google\Chrome SxS\Application\chrome.exe" --use-angle=gl --flag-switches-begin --flag-switches-end Driver Information Initialization time 0 In-process GPU true Passthrough Command Decoder false Supports overlays false Sandboxed false GPU0 VENDOR = 0x10de, DEVICE= 0x1b80 Optimus false Optimus false AMD switchable false Desktop compositing Aero Glass Diagonal Monitor Size of \\.\DISPLAY1 23.9" Driver vendor Google Inc. Driver version 3.3.0.2 Driver date 2017/04/07 Pixel shader version 3.0 Vertex shader version 3.0 Max. MSAA samples 4 Machine model name Machine model version GL_VENDOR Google Inc. GL_RENDERER Google SwiftShader GL_VERSION OpenGL ES 2.0 SwiftShader GL_EXTENSIONS Disabled Extensions GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent Window system binding vendor Window system binding version Window system binding extensions Direct rendering Yes Reset notification strategy 0x0000 GPU process crash count 1 Compositor Information Tile Update Mode One-copy Partial Raster Enabled GpuMemoryBuffers Status ATC Software only ATCIA Software only DXT1 Software only DXT5 Software only ETC1 Software only R_8 Software only RG_88 Software only BGR_565 Software only RGBA_4444 Software only RGBX_8888 Software only RGBA_8888 Software only BGRX_8888 Software only BGRA_8888 Software only RGBA_F16 Software only YVU_420 Software only YUV_420_BIPLANAR Software only UYVY_422 Software only Diagnostics ... loading ... Log Messages [17080:8744:0517/174329.428:ERROR:angle_platform_impl.cc(36)] : egl::Display::initialize(440): ANGLE Display::initialize error 0: Failed to open D3D device. [17080:8744:0517/174329.428:ERROR:gl_surface_egl.cc(690)] : eglInitialize OpenGL failed with error EGL_BAD_PARAMETER [17080:8744:0517/174329.428:ERROR:gl_initializer_win.cc(240)] : GLSurfaceEGL::InitializeOneOff failed. GpuProcessHostUIShim: The GPU process crashed!
,
May 17 2017
Thanks Geoff. It's quite odd that this seems isolated to Win10 Creators Update and the release build of Chrome. Maybe some memory is not being initialized properly? This is an issue for getting the GL backend productized, but is also affecting our WebGL test coverage a bit, so it would be good to get this fixed.
,
May 22 2017
Geoff, have you had any luck with this issue so far? I just double-checked that it reproduces also on the stable driver version 382. If you need any help from me to make progress I'd be happy to provide it, this is an important bug to solve for NVIDIA.
,
May 22 2017
Hey Olli, I'll be looking at this tomorrow.
,
May 24 2017
Hey Olli, I had a chance to dig into this. The failure is happening in the wglDXOpenDeviceNV function of the WGL_NV_DX_interop(2) extension (https://chromium.googlesource.com/angle/angle/+/master/src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp#726). The device appears to be fine but returns and null handle and generates an error (0xC0070032) which isn't list of errors returned by this function. I also noticed that this regressed between driver versions 378.92 and 382.33. Can this bug be filed with the appropriate driver team? If it would help, I can try to make a standalone repro.
,
May 24 2017
Curious. Do you know why it doesn't repro on the debug build? That made me suspect that it's most likely a Chromium/ANGLE bug. But if it's on our end I'll make sure that the driver team gets on fixing it. A standalone repro would be very helpful, that would make it much easier for them to address it.
,
May 24 2017
It does repro in a debug build for me. This is a code path that only Chrome takes though, using a DXGI swap chain with the interop extension for presentation. I'll make a standalone repro.
,
May 24 2017
,
May 24 2017
I reverted my driver too and can confirm that the repro succeeds on the 378.92 driver.
,
Jun 5 2017
Geoff, we're so far unable to repro the issue using the minimal repro case. We've tried on two different Windows 10 workstations. I tried two different driver versions, 382.33 and a prerelease driver, both debug and release build of the repro case application (with asserts enabled in release build using "#undef NDEBUG"). I built it with MSVS 2015 Update 3. Can you provide a complete Visual Studio project or another kind of build setup, in case there's something different in the build configuration we're using? Any other ideas come to mind how we could narrow this down?
,
Jun 6 2017
I can repro it without the creators edition on Windows 10 by taking ANGLE's HelloTriangle sample and replacing the source in HelloTriangle.cpp with the repro. I'll see if I can make a standalone sln.
,
Jun 9 2017
We've gotten the bug to reproduce reliably on our end now with the minimal test case by replacing the hello_triangle source like you did. And we're proceeding on debugging the driver based on that. However after trying to replicate the VS build settings in a standalone sln myself I couldn't get the bug to repro - this seems to still also leave the possibility that ANGLE's build is doing something incorrectly, though I can't imagine what. Please do report if you can reproduce with a standalone sln, we need to get to the bottom of this.
,
Jun 29 2017
We finished debugging the issue in our end and have written a fix to the driver. It will make it to a driver release eventually. Doesn't seem like ANGLE was doing anything wrong. I'll close the bug later when we have the version number of the released driver where this is fixed.
,
Jun 29 2017
Great, thanks for the update Olli!
,
Jun 29 2017
cc'ing Stephen regarding the GL back-end on Windows.
,
Jun 29 2017
Thanks; cc'ing Victor too.
,
Jun 30 2017
Thanks Olli! If you have a specific driver range for the bad behaviour we can make sure to use a tight blacklist entry for the OpenGL backend when it's used by default.
,
Jun 30 2017
Also, is there any possibility of a workaround?
,
Jul 3 2017
Based on our testing NVIDIA driver versions > 378 are affected. Drivers earlier than that should not be affected.
,
Sep 3 2017
Still experiencing this.. any update Olli? Going to try using a 378 version.
,
Sep 4 2017
The latest 385.41 WHQL driver release contains a fix (tested on my end using GTX 1080). We should be very careful with the version range we'll put in the code to workaround a serious issue like this though. The reason is that occasionally there can be a driver released from another branch, let's say specific to workstation products for example, which could have a slightly higher version number but where all the same fixes might not be included yet.
,
Oct 8
Nothing more to be done for this bug specifically - I think it's OK to close this. If the GL backend is enabled by default it should be fairly easy to limit it to drivers with version >= 388.71 to be safe. |
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by geoffl...@chromium.org
, May 17 2017Status: Assigned (was: Untriaged)