New issue
Advanced search Search tips

Issue 894675 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Nov 8
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug

Blocked on:
issue 907684

Blocking:
issue 800950



Sign in to add a comment

Do not use direct composition if overlays are not supported

Project Member Reported by sunn...@chromium.org, Oct 12

Issue description

See  issue 800950  for example where an old AMD driver does not work well with direct composition.  zmo@ tried applying a workaround that disabled DC on all non-Intel GPUs, but that spiked GPU crash rates.

Per an offline discussion with zmo@, this likely happens because although we don't use DirectCompositionSurfaceWin, GLSurfceEGL tells ANGLE to use direct composition without taking the workaround into account.  The workaround is applied after initializing GL without extensions, but GLSurfaceEGL::InitializeOneOffCommon which sets g_use_direct_composition is called before that.

I have a fix that removes usage of direct composition with ANGLE native surfaces, and moves all direct composition logic to DirectCompositionSurfaceWin which is used only when hardware overlays are supported.

Separately we also discussed the need to simplify GLSurfaceEGL, and split out Windows and Android specific logic from it.
 
Hello!

Is it Pri 1 bug, maybe?

Project Member

Comment 3 by bugdroid1@chromium.org, Oct 17

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80

commit 90b4fddc3ac00c109bedfb8a395faaa3e9e49f80
Author: Sunny Sachanandani <sunnyps@chromium.org>
Date: Wed Oct 17 20:04:28 2018

Use DirectComposition only if hardware overlays are supported

Before this change, we were using DirectCompositionSurfaceWin on most
newer systems, but it's not needed unless hardware overlays are
supported.

The disable_direct_composition workaround increases crash rates because
it's applied before GLSurfaceEGL decides to use direct composition with
ANGLE native EGL surfaces.

This change moves all direct composition logic from GLSurfaceEGL to
DirectCompositionSurfaceWin, and removes use of direct composition with
ANGLE surfaces.

Bug:  894675 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I2e9c7c8a7ff36fe7b24868544c03aad0e0b7dad6
Reviewed-on: https://chromium-review.googlesource.com/c/1278529
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#600529}
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/content/browser/gpu/gpu_internals_ui.cc
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/config/gpu_driver_bug_list.json
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/config/gpu_finch_features.cc
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/config/gpu_finch_features.h
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/config/gpu_info.cc
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/config/gpu_info.h
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/config/gpu_util.cc
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/ipc/common/gpu_info.mojom
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/ipc/common/gpu_info_struct_traits.cc
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/ipc/common/gpu_info_struct_traits.h
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/ipc/common/struct_traits_unittest.cc
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/ipc/service/direct_composition_child_surface_win.h
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/ipc/service/direct_composition_surface_win.cc
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/ipc/service/direct_composition_surface_win.h
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/ipc/service/gpu_init.cc
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/gpu/ipc/service/image_transport_surface_win.cc
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/ui/gl/gl_surface_egl.cc
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/ui/gl/gl_surface_egl.h
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/ui/gl/gl_switches.cc
[modify] https://crrev.com/90b4fddc3ac00c109bedfb8a395faaa3e9e49f80/ui/gl/gl_switches.h

Project Member

Comment 4 by bugdroid1@chromium.org, Oct 17

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/deb11af029d6c3418885d3d84764bd8358f887f2

commit deb11af029d6c3418885d3d84764bd8358f887f2
Author: Sunny Sachanandani <sunnyps@chromium.org>
Date: Wed Oct 17 22:58:39 2018

Revert "Use DirectComposition only if hardware overlays are supported"

This reverts commit 90b4fddc3ac00c109bedfb8a395faaa3e9e49f80.

Reason for revert: Causing DC test failures on WinServer2008 bots: https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Win7%20FYI%20x64%20Release%20%28NVIDIA%29/2903

Original change's description:
> Use DirectComposition only if hardware overlays are supported
> 
> Before this change, we were using DirectCompositionSurfaceWin on most
> newer systems, but it's not needed unless hardware overlays are
> supported.
> 
> The disable_direct_composition workaround increases crash rates because
> it's applied before GLSurfaceEGL decides to use direct composition with
> ANGLE native EGL surfaces.
> 
> This change moves all direct composition logic from GLSurfaceEGL to
> DirectCompositionSurfaceWin, and removes use of direct composition with
> ANGLE surfaces.
> 
> Bug:  894675 
> Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
> Change-Id: I2e9c7c8a7ff36fe7b24868544c03aad0e0b7dad6
> Reviewed-on: https://chromium-review.googlesource.com/c/1278529
> Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
> Reviewed-by: Antoine Labour <piman@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#600529}

TBR=dcheng@chromium.org,zmo@chromium.org,sunnyps@chromium.org,piman@chromium.org

Change-Id: Ic8ff38dddc037934dbf19267c3d027fd81c078eb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  894675 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Reviewed-on: https://chromium-review.googlesource.com/c/1287299
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Cr-Commit-Position: refs/heads/master@{#600585}
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/content/browser/gpu/gpu_internals_ui.cc
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/config/gpu_driver_bug_list.json
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/config/gpu_finch_features.cc
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/config/gpu_finch_features.h
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/config/gpu_info.cc
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/config/gpu_info.h
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/config/gpu_util.cc
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/ipc/common/gpu_info.mojom
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/ipc/common/gpu_info_struct_traits.cc
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/ipc/common/gpu_info_struct_traits.h
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/ipc/common/struct_traits_unittest.cc
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/ipc/service/direct_composition_child_surface_win.h
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/ipc/service/direct_composition_surface_win.cc
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/ipc/service/direct_composition_surface_win.h
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/ipc/service/gpu_init.cc
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/gpu/ipc/service/image_transport_surface_win.cc
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/ui/gl/gl_surface_egl.cc
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/ui/gl/gl_surface_egl.h
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/ui/gl/gl_switches.cc
[modify] https://crrev.com/deb11af029d6c3418885d3d84764bd8358f887f2/ui/gl/gl_switches.h

Project Member

Comment 5 by bugdroid1@chromium.org, Oct 18

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3dcb5da8b925ccc5649e5737e809cc6a992b98c4

commit 3dcb5da8b925ccc5649e5737e809cc6a992b98c4
Author: Sunny Sachanandani <sunnyps@chromium.org>
Date: Thu Oct 18 04:59:43 2018

Reland "Use DirectComposition only if hardware overlays are supported"

This is a reland of 90b4fddc3ac00c109bedfb8a395faaa3e9e49f80

Early out from DirectComposition path if it cannot possibly be supported
even if command line flags force it on.  This is needed to make pixel
tests which force enable DirectComposition work on Windows 7/2008 bots.

Original change's description:
> Use DirectComposition only if hardware overlays are supported
>
> Before this change, we were using DirectCompositionSurfaceWin on most
> newer systems, but it's not needed unless hardware overlays are
> supported.
>
> The disable_direct_composition workaround increases crash rates because
> it's applied before GLSurfaceEGL decides to use direct composition with
> ANGLE native EGL surfaces.
>
> This change moves all direct composition logic from GLSurfaceEGL to
> DirectCompositionSurfaceWin, and removes use of direct composition with
> ANGLE surfaces.
>
> Bug:  894675 
> Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
> Change-Id: I2e9c7c8a7ff36fe7b24868544c03aad0e0b7dad6
> Reviewed-on: https://chromium-review.googlesource.com/c/1278529
> Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
> Reviewed-by: Antoine Labour <piman@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#600529}

TBR=zmo@chromium.org,piman@chromium.org,dcheng@chromium.org

Bug:  894675 
Change-Id: Ie4322ad2cfceac2156a241b5affbc962dde24088
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Reviewed-on: https://chromium-review.googlesource.com/c/1287254
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Cr-Commit-Position: refs/heads/master@{#600662}
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/content/browser/gpu/gpu_internals_ui.cc
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/config/gpu_driver_bug_list.json
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/config/gpu_finch_features.cc
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/config/gpu_finch_features.h
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/config/gpu_info.cc
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/config/gpu_info.h
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/config/gpu_util.cc
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/ipc/common/gpu_info.mojom
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/ipc/common/gpu_info_struct_traits.cc
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/ipc/common/gpu_info_struct_traits.h
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/ipc/common/struct_traits_unittest.cc
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/ipc/service/direct_composition_child_surface_win.h
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/ipc/service/direct_composition_surface_win.cc
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/ipc/service/direct_composition_surface_win.h
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/ipc/service/gpu_init.cc
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/gpu/ipc/service/image_transport_surface_win.cc
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/ui/gl/gl_surface_egl.cc
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/ui/gl/gl_surface_egl.h
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/ui/gl/gl_switches.cc
[modify] https://crrev.com/3dcb5da8b925ccc5649e5737e809cc6a992b98c4/ui/gl/gl_switches.h

r600662 causes Chrome to show me blank windows when I remote to a Windows machine. Running with --disable-gpu brings things back. Please revert or fix before M72 branch. Thanks. To be clear: the problem is with running chrome.exe on a machine to which I'm connected via CRD.

Here's what chrome://gpu says:

Graphics Feature Status
Canvas: Software only, hardware acceleration unavailable
Flash: Software only. Hardware acceleration disabled
Flash Stage3D: Software only. Hardware acceleration disabled
Flash Stage3D Baseline profile: Software only. Hardware acceleration disabled
Compositing: Software only. Hardware acceleration disabled
Multiple Raster Threads: Enabled
Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
Out-of-process Rasterization: Disabled
Hardware Protected Video Decode: Disabled
Rasterization: Software only. Hardware acceleration disabled
Skia Deferred Display List: Disabled
Skia Renderer: Disabled
Surface Control: Disabled
Surface Synchronization: Enabled
Video Decode: Software only. Hardware acceleration disabled
Viz Service Display Compositor: Disabled
WebGL: Software only, hardware acceleration unavailable
WebGL2: Software only, hardware acceleration unavailable
Problems Detected
Native GpuMemoryBuffers have been disabled, either via about:flags or command line.
Disabled Features: native_gpu_memory_buffers
Viz service display compositor is not enabled by default.
Disabled Features: viz_display_compositor
Skia renderer is not used by default.
Disabled Features: skia_renderer
Skia deferred display list is not used by default.
Disabled Features: skia_deferred_display_list
Version Information
Data exported	2018-10-30T10:51:37.591Z
Chrome version	Chrome/72.0.3596.0
Operating system	Windows NT 10.0.17134
Software rendering list URL	https://chromium.googlesource.com/chromium/src/+/0b292963c513fc540a19aef5251a8b28a68f6f6f/gpu/config/software_rendering_list.json
Driver bug list URL	https://chromium.googlesource.com/chromium/src/+/0b292963c513fc540a19aef5251a8b28a68f6f6f/gpu/config/gpu_driver_bug_list.json
ANGLE commit id	0da64b5e1009
2D graphics backend	Skia/72 71652e2a09b7ecfea7a8cd0b5ce39ad030e8fbea-
Command Line	"C:\Users\grt\AppData\Local\Google\Chrome SxS\Application\chrome.exe" --disable-gpu --flag-switches-begin --flag-switches-end
Driver Information
Initialization time	177
In-process GPU	false
Passthrough Command Decoder	false
Sandboxed	true
GPU0	VENDOR = 0x10de [Google Inc.], DEVICE= 0x13ba [Google SwiftShader] *ACTIVE*
Optimus	false
AMD switchable	false
Desktop compositing	Aero Glass
Direct composition overlays	false
Overlay capabilities
Driver D3D12 feature level	Not supported
Driver Vulkan API version	Not supported
Driver vendor	NVIDIA
Driver version	369.09
Driver date	8-1-2016
GPU CUDA compute capability major version	0
Pixel shader version	3.00
Vertex shader version	3.00
Max. MSAA samples	4
Machine model name	
Machine model version	
GL_VENDOR	Google Inc.
GL_RENDERER	Google SwiftShader
GL_VERSION	OpenGL ES 3.0 SwiftShader 4.1.0.4
GL_EXTENSIONS	GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_depth32 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_framebuffer_object GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_texture_3D GL_OES_vertex_array_object GL_OES_vertex_half_float GL_EXT_blend_minmax GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_draw_buffers GL_EXT_instanced_arrays GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_texture_compression_dxt1 GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_ARB_texture_rectangle GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_APPLE_texture_format_BGRA8888 GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_texture_filtering_hint GL_NV_depth_buffer_float2 GL_NV_fence GL_NV_framebuffer_blit GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil
Disabled Extensions	
Disabled WebGL Extensions	
Window system binding vendor	Google Inc.
Window system binding version	1.4 SwiftShader 4.1.0.4
Window system binding extensions	EGL_KHR_create_context EGL_KHR_get_all_proc_addresses EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync EGL_KHR_image_base EGL_KHR_surfaceless_context EGL_ANGLE_iosurface_client_buffer EGL_ANDROID_framebuffer_target EGL_ANDROID_recordable
Direct rendering	Yes
Reset notification strategy	0x0000
GPU process crash count	1
Compositor Information
Tile Update Mode	One-copy
Partial Raster	Enabled
GpuMemoryBuffers Status
R_8	Software only
R_16	Software only
RG_88	Software only
BGR_565	Software only
RGBA_4444	Software only
RGBX_8888	GPU_READ, SCANOUT
RGBA_8888	GPU_READ, SCANOUT
BGRX_8888	Software only
BGRX_1010102	Software only
RGBX_1010102	Software only
BGRA_8888	Software only
RGBA_F16	Software only
YVU_420	Software only
YUV_420_BIPLANAR	Software only
UYVY_422	Software only
Display(s) Information
Info	Display[2528732444] bounds=[0,0 1920x1200], workarea=[0,0 1920x1160], scale=1, external.
Color space information	{primaries:BT709, transfer:IEC61966_2_1, matrix:RGB, range:FULL}
Bits per color component	8
Bits per pixel	24
Video Acceleration Information
Encode h264 baseline	up to 3840x2176 pixels and/or 30.000 fps
Encode h264 main	up to 3840x2176 pixels and/or 30.000 fps
Encode h264 high	up to 3840x2176 pixels and/or 30.000 fps
Diagnostics
... loading ...
Driver Information for Hardware GPU
Initialization time	177
In-process GPU	false
Passthrough Command Decoder	false
Sandboxed	true
GPU0	VENDOR = 0x10de [Google Inc.], DEVICE= 0x13ba [Google SwiftShader] *ACTIVE*
Optimus	false
AMD switchable	false
Desktop compositing	Aero Glass
Direct composition overlays	false
Overlay capabilities
Driver D3D12 feature level	Not supported
Driver Vulkan API version	Not supported
Driver vendor	NVIDIA
Driver version	369.09
Driver date	8-1-2016
GPU CUDA compute capability major version	0
Pixel shader version	3.00
Vertex shader version	3.00
Max. MSAA samples	4
Machine model name	
Machine model version	
GL_VENDOR	Google Inc.
GL_RENDERER	Google SwiftShader
GL_VERSION	OpenGL ES 3.0 SwiftShader 4.1.0.4
GL_EXTENSIONS	GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_depth32 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_framebuffer_object GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_texture_3D GL_OES_vertex_array_object GL_OES_vertex_half_float GL_EXT_blend_minmax GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_draw_buffers GL_EXT_instanced_arrays GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_texture_compression_dxt1 GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_ARB_texture_rectangle GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_APPLE_texture_format_BGRA8888 GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_texture_filtering_hint GL_NV_depth_buffer_float2 GL_NV_fence GL_NV_framebuffer_blit GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil
Disabled Extensions	
Disabled WebGL Extensions	
Window system binding vendor	Google Inc.
Window system binding version	1.4 SwiftShader 4.1.0.4
Window system binding extensions	EGL_KHR_create_context EGL_KHR_get_all_proc_addresses EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync EGL_KHR_image_base EGL_KHR_surfaceless_context EGL_ANGLE_iosurface_client_buffer EGL_ANDROID_framebuffer_target EGL_ANDROID_recordable
Direct rendering	Yes
Reset notification strategy	0x0000
GPU process crash count	1
Graphics Feature Status for Hardware GPU
Canvas: Software only, hardware acceleration unavailable
Flash: Software only. Hardware acceleration disabled
Flash Stage3D: Software only. Hardware acceleration disabled
Flash Stage3D Baseline profile: Software only. Hardware acceleration disabled
Compositing: Software only. Hardware acceleration disabled
Multiple Raster Threads: Enabled
Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
Out-of-process Rasterization: Disabled
Hardware Protected Video Decode: Disabled
Rasterization: Software only. Hardware acceleration disabled
Skia Deferred Display List: Disabled
Skia Renderer: Disabled
Surface Control: Disabled
Surface Synchronization: Enabled
Video Decode: Software only. Hardware acceleration disabled
Viz Service Display Compositor: Disabled
WebGL: Software only, hardware acceleration unavailable
WebGL2: Software only, hardware acceleration unavailable
Problems Detected for Hardware GPU
Native GpuMemoryBuffers have been disabled, either via about:flags or command line.
Disabled Features: native_gpu_memory_buffers
Viz service display compositor is not enabled by default.
Disabled Features: viz_display_compositor
Skia renderer is not used by default.
Disabled Features: skia_renderer
Skia deferred display list is not used by default.
Disabled Features: skia_deferred_display_list
Log Messages
GpuProcessHostUIShim: The GPU process crashed!
GpuProcessHostUIShim:
I can't reproduce it while CRDing to my Win10 desktop (NVIDIA) from my Win10 laptop with Chrome Beta.

Can you provide the about:gpu without --disable-gpu?
You won't be able to reproduce with Chrome Beta since the CL hasn't made it to that branch.  You'll need to try with Chrome Canary.  I'll try reproducing later today as well.
Oh I forgot to mention: I tried with Canary also and could not reproduce.
Project Member

Comment 10 by bugdroid1@chromium.org, Nov 8

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/eec86ff6c03b228b426a4553c89724d04e0a0f56

commit eec86ff6c03b228b426a4553c89724d04e0a0f56
Author: Sunny Sachanandani <sunnyps@chromium.org>
Date: Thu Nov 08 03:20:24 2018

Reenable direct composition without video layers

Reenable direct composition surface on devices without hardware overlays
since it enables other power improvements like flip mode swap chain and
disabling DWM redirection surface.

To mitigate the original concerns about direct composition, this change
makes DCLayerTree lazy initialize the video context and processor when
a video layer is first used.  On devices that don't support hardware
overlays, the video context and processor will never be initialized.

Bug:  894675 , 900702
Change-Id: I8c9d5b78718de2620ca177410d4916390e7cb219
Reviewed-on: https://chromium-review.googlesource.com/c/1318808
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606312}
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/content/browser/gpu/gpu_internals_ui.cc
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/gpu/config/gpu_driver_bug_list.json
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/gpu/config/gpu_info.cc
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/gpu/config/gpu_info.h
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/gpu/config/gpu_util.cc
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/gpu/ipc/common/gpu_info.mojom
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/gpu/ipc/common/gpu_info_struct_traits.cc
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/gpu/ipc/common/gpu_info_struct_traits.h
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/gpu/ipc/common/struct_traits_unittest.cc
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/gpu/ipc/service/direct_composition_surface_win.cc
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/gpu/ipc/service/direct_composition_surface_win.h
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/gpu/ipc/service/gpu_init.cc
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/gpu/ipc/service/image_transport_surface_win.cc
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/ui/gl/gl_switches.cc
[modify] https://crrev.com/eec86ff6c03b228b426a4553c89724d04e0a0f56/ui/gl/gl_switches.h

Status: Fixed (was: Started)
We re-enabled DirectComposition because it helps with power usage even without overlays due to the use of flip mode swap chains.

However, we've made some fixes:
1) The disable_direct_composition workaround actually disables direct composition for real i.e. we won't use it in ANGLE either.
2) We don't initialize the D3D11 video processor unless overlays are used which means that we shouldn't hit the kind of crashes we've seen on older drivers.

We've also reinstated the previous workarounds so problematic cases won't use direct composition at all.
Project Member

Comment 12 by bugdroid1@chromium.org, Nov 9

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6fb9951ce0f87e70b86cb5b12b4cca635341cbad

commit 6fb9951ce0f87e70b86cb5b12b4cca635341cbad
Author: Patrik Höglund <phoglund@chromium.org>
Date: Fri Nov 09 12:58:40 2018

Revert "Reenable direct composition without video layers"

This reverts commit eec86ff6c03b228b426a4553c89724d04e0a0f56.

Reason for revert: Appears to break cc_unittests on the Linux CFI bot: https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Linux%20CFI/11190

Original change's description:
> Reenable direct composition without video layers
> 
> Reenable direct composition surface on devices without hardware overlays
> since it enables other power improvements like flip mode swap chain and
> disabling DWM redirection surface.
> 
> To mitigate the original concerns about direct composition, this change
> makes DCLayerTree lazy initialize the video context and processor when
> a video layer is first used.  On devices that don't support hardware
> overlays, the video context and processor will never be initialized.
> 
> Bug:  894675 , 900702
> Change-Id: I8c9d5b78718de2620ca177410d4916390e7cb219
> Reviewed-on: https://chromium-review.googlesource.com/c/1318808
> Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Reviewed-by: Antoine Labour <piman@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#606312}

TBR=dcheng@chromium.org,zmo@chromium.org,sunnyps@chromium.org,piman@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug:  894675 , 900702
Change-Id: I094721159277c50d9061dfded252bbac1084977f
Reviewed-on: https://chromium-review.googlesource.com/c/1328965
Reviewed-by: Patrik Höglund <phoglund@chromium.org>
Commit-Queue: Patrik Höglund <phoglund@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606810}
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/content/browser/gpu/gpu_internals_ui.cc
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/gpu/config/gpu_driver_bug_list.json
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/gpu/config/gpu_info.cc
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/gpu/config/gpu_info.h
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/gpu/config/gpu_util.cc
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/gpu/ipc/common/gpu_info.mojom
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/gpu/ipc/common/gpu_info_struct_traits.cc
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/gpu/ipc/common/gpu_info_struct_traits.h
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/gpu/ipc/common/struct_traits_unittest.cc
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/gpu/ipc/service/direct_composition_surface_win.cc
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/gpu/ipc/service/direct_composition_surface_win.h
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/gpu/ipc/service/gpu_init.cc
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/gpu/ipc/service/image_transport_surface_win.cc
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/ui/gl/gl_switches.cc
[modify] https://crrev.com/6fb9951ce0f87e70b86cb5b12b4cca635341cbad/ui/gl/gl_switches.h

Project Member

Comment 13 by bugdroid1@chromium.org, Nov 9

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6e844c42a37cbe452e55f77acbe662892a44ad21

commit 6e844c42a37cbe452e55f77acbe662892a44ad21
Author: Sunny Sachanandani <sunnyps@chromium.org>
Date: Fri Nov 09 20:27:12 2018

Reland "Reenable direct composition without video layers"

This reverts commit 6fb9951ce0f87e70b86cb5b12b4cca635341cbad.

Reason for revert: Not responsible for test failures. See  crbug.com/903931 

Original change's description:
> Revert "Reenable direct composition without video layers"
> 
> This reverts commit eec86ff6c03b228b426a4553c89724d04e0a0f56.
> 
> Reason for revert: Appears to break cc_unittests on the Linux CFI bot: https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Linux%20CFI/11190
> 
> Original change's description:
> > Reenable direct composition without video layers
> > 
> > Reenable direct composition surface on devices without hardware overlays
> > since it enables other power improvements like flip mode swap chain and
> > disabling DWM redirection surface.
> > 
> > To mitigate the original concerns about direct composition, this change
> > makes DCLayerTree lazy initialize the video context and processor when
> > a video layer is first used.  On devices that don't support hardware
> > overlays, the video context and processor will never be initialized.
> > 
> > Bug:  894675 , 900702
> > Change-Id: I8c9d5b78718de2620ca177410d4916390e7cb219
> > Reviewed-on: https://chromium-review.googlesource.com/c/1318808
> > Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
> > Reviewed-by: Zhenyao Mo <zmo@chromium.org>
> > Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> > Reviewed-by: Antoine Labour <piman@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#606312}
> 
> TBR=dcheng@chromium.org,zmo@chromium.org,sunnyps@chromium.org,piman@chromium.org
> 
> # Not skipping CQ checks because original CL landed > 1 day ago.
> 
> Bug:  894675 , 900702
> Change-Id: I094721159277c50d9061dfded252bbac1084977f
> Reviewed-on: https://chromium-review.googlesource.com/c/1328965
> Reviewed-by: Patrik Höglund <phoglund@chromium.org>
> Commit-Queue: Patrik Höglund <phoglund@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#606810}

TBR=dcheng@chromium.org,phoglund@chromium.org,zmo@chromium.org,sunnyps@chromium.org,piman@chromium.org

Change-Id: I47896832307fc7be15acfcefffe1953411e15cad
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  894675 , 900702,  903931 
Reviewed-on: https://chromium-review.googlesource.com/c/1330284
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606951}
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/content/browser/gpu/gpu_internals_ui.cc
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/gpu/config/gpu_driver_bug_list.json
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/gpu/config/gpu_info.cc
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/gpu/config/gpu_info.h
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/gpu/config/gpu_util.cc
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/gpu/ipc/common/gpu_info.mojom
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/gpu/ipc/common/gpu_info_struct_traits.cc
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/gpu/ipc/common/gpu_info_struct_traits.h
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/gpu/ipc/common/struct_traits_unittest.cc
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/gpu/ipc/service/direct_composition_surface_win.cc
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/gpu/ipc/service/direct_composition_surface_win.h
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/gpu/ipc/service/gpu_init.cc
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/gpu/ipc/service/image_transport_surface_win.cc
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/ui/gl/gl_switches.cc
[modify] https://crrev.com/6e844c42a37cbe452e55f77acbe662892a44ad21/ui/gl/gl_switches.h

Project Member

Comment 14 by bugdroid1@chromium.org, Nov 19

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4eaa4d2f364739af777e527e7095eb2714a60009

commit 4eaa4d2f364739af777e527e7095eb2714a60009
Author: Sunny Sachanandani <sunnyps@chromium.org>
Date: Mon Nov 19 22:41:45 2018

Cache video processor output view for video swap chain

crrev.com/1318808 changed SwapChainPresenter to recreate video processor
output view on every PresentToSwapChain in addition to lazy initializing
the video device.  A power regression was noticed on internal AVA bots
around the same time.  This is a speculative fix for the power
regression by reverting to the old behavior of caching the output view.

Bug:  894675 
Change-Id: I4130129951d8b9d9efa9aaeee4ba78aa1ef3f778
Reviewed-on: https://chromium-review.googlesource.com/c/1341156
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609475}
[modify] https://crrev.com/4eaa4d2f364739af777e527e7095eb2714a60009/gpu/ipc/service/direct_composition_surface_win.cc

Hello!
I noticed, that on computers with two GPU:
GPU0	VENDOR = 0x8086, DEVICE= 0x5916
GPU1	VENDOR = 0x1002, DEVICE= 0x6900 
The workaround with "id": 278 (https://cs.chromium.org/chromium/src/gpu/config/gpu_driver_bug_list.json?type=cs&q=disable_direct_composition&g=0&l=2970)
doesn't apply at the time DirectComposition is initialized.
In this moment all gpu marked as "no active" and for this entry only Intel gpu (because it's primary gpu) is checking (https://cs.chromium.org/chromium/src/gpu/config/gpu_control_list.cc?type=cs&q=puControlList::Conditions::Contains&g=0&l=348).
I guess we should use category "multi_gpu_category": "any" to avoid bugs? Or will there be decision (enable / disable DirectComposition in runtime) for computers with two gpu?

That's a very good point. On Windows we actually don't switch GPUs dynamically through Chrome's life time, so we could identify which GPU is used and apply blacklisting or GPU driver bug workarounds on the correct GPU.

After a quick scan of code, we do re-compute driver bug workarounds after initializing GL bindings and creating a context [1].

The bug is that we query direct composition and overlay support at context creation time [2], which is before we re-compute the driver bug workarounds and append the necessary commandline switch.

[1]: https://cs.chromium.org/chromium/src/gpu/ipc/service/gpu_init.cc?rcl=1470e70fb7ae81232314db36db57545c0b7ff637&l=256

[2]: https://cs.chromium.org/chromium/src/gpu/ipc/service/gpu_init.cc?rcl=e930a44114a7f687fe434483f1754d07b99d3337&l=70
Blockedon: 907684

Sign in to add a comment