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

Issue 778770 link

Starred by 6 users

Issue metadata

Status: Fixed
Owner:
OOO until 2019-01-24
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 1
Type: Bug

Blocking:
issue 773705
issue 779168
issue 779318



Sign in to add a comment

WebGL Corruption on High Sierra NVidia machines

Project Member Reported by ericrk@chromium.org, Oct 26 2017

Issue description

When running on an NVidia based mac with High Sierra, a large portion of WebGL content doesn't work (displays nothing or flickers). We've reported the issue to Apple, but until an OS level fix is added it may be worth trying to work around this.

To repro:
1) Ensure Chrome is closed.
2) Force-enable the discrete NVidia GPU (using GfxCardStatus or Quartz Debug).
3) Launch Chrome and navigate to http://webglsamples.org/aquarium/aquarium.html
4) Observe failed rendering

Note that when Chrome is launched with the integrated GPU and dynamically switches to the discrete GPU, these problems are not observed. This makes me hope that some feature that is disabled when launching with the integrated GPU (or some other driver bug workaround) could also be applied to the discrete GPU's config to avoid this issue.
 

Comment 1 by ericrk@chromium.org, Oct 26 2017

Cc: kbr@chromium.org
Owner: ----

Comment 2 by kbr@chromium.org, Oct 26 2017

Cc: erikc...@chromium.org
Owner: kbr@chromium.org
Status: Assigned (was: Available)
Argh.

The only such machine I have in the office is my work laptop, which is locked down and can't be booted to a thumb drive containing High Sierra. (I also haven't taken the OS update yet...)

Filed t/29367305 about getting a system.

erikchen@: do you happen to have one of these older MacBook Pros with NVIDIA GPU?

ericrk@: can you try the command line flag:
  --disable-features=WebGLImageChromium

Does that make most WebGL content render correctly?

Comment 3 by ericrk@chromium.org, Oct 26 2017

Ah, good call kbr@. Running with --disable-features=WebGLImageChromium fixes all issues I've seen.

Note that on 61/62, most content works without this flag. The only test case which I've seen problems on is: http://webglsamples.org/multiple-views/multiple-views.html, although the flag addresses this case.

On Canary, most content is broken without this flag, and spams the following errors (not seen on 61/62, even in the broken cases):
[6358:775:1026/141243.963934:ERROR:gles2_cmd_decoder.cc(8307)] [.Offscreen-For-WebGL-0x7fe9e3058a00]GL ERROR :GL_INVALID_OPERATION : glBlitFramebufferCHROMIUM: src and dst formats differ for color

Comment 4 by ericrk@chromium.org, Oct 26 2017

Hmmm... Canary is now working for me in more cases (matches 61/62), so the more severe issues (with the error messages) are either flaky or I got an update and something has changed in the last day or two?
Cc: ccameron@chromium.org
ccameron recently made some changes 

Comment 6 by kbr@chromium.org, Oct 27 2017

Blocking: 779168

Comment 7 by kbr@chromium.org, Oct 27 2017

I can confirm that:
  --disable-features=WebGLImageChromium
works around the flickering problem with:
  http://webglsamples.org/multiple-views/multiple-views.html
on both Chrome Stable (62) and Canary (64).

Working on adding a blacklist entry for it. This will probably involve changing how this feature is enabled since the blacklist can't control features enabled with --enable-features or disabled by --disable-features.

Comment 8 by kbr@chromium.org, Oct 30 2017

Blocking: 779318
Project Member

Comment 9 by bugdroid1@chromium.org, Nov 2 2017

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

commit a28eb737c4c9424d7656ada19b688af854777968
Author: Justin Novosad <junov@chromium.org>
Date: Thu Nov 02 01:23:34 2017

Allow blacklisting of use of GpuMemoryBuffers as render targets.

Disable this on macOS 10.13 when NVIDIA GPUs are in use. Based on
experiments with WebGL, it strongly seems that the bugs introduced in
this OS release are not tied to GPU rasterization or accelerated 2D
canvas, but rather caused by rendering into IOSurfaces via OpenGL.

Re-enable accelerated 2D canvas and GPU rasterization on this
configuration.

BUG= 773705 ,  778770 

Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I8422a84dd65b0db8c63af5398547da7366217274
Reviewed-on: https://chromium-review.googlesource.com/745966
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Justin Novosad <junov@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Eric Karl <ericrk@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513360}
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/cc/DEPS
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/content/renderer/pepper/ppb_graphics_3d_impl.cc
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/content/renderer/pepper/ppb_graphics_3d_impl.h
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/gpu/command_buffer/service/feature_info.cc
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/gpu/config/gpu_driver_bug_list.json
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/gpu/config/gpu_driver_bug_workaround_type.h
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/gpu/config/software_rendering_list.json
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.h
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridgeTest.cpp
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/third_party/WebKit/Source/platform/graphics/DEPS
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/third_party/WebKit/Source/platform/graphics/gpu/DEPS
[modify] https://crrev.com/a28eb737c4c9424d7656ada19b688af854777968/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp

Comment 10 by kbr@chromium.org, Nov 3 2017

The CL above fixes the known flickering and corruption issues. Backporting it to M63 is being considered under the parent bug,  Issue 773705 .

Comment 11 by kbr@chromium.org, Nov 3 2017

Status: Fixed (was: Assigned)

Comment 12 by kbr@chromium.org, Nov 9 2017

Status: Assigned (was: Fixed)
It turns out that the patch above didn't work as expected and is being reverted. The only reproducible flickering of WebGL content that we know of right now is of this demo:

http://webglsamples.org/multiple-views/multiple-views.html

It turns out that this demo's been flickering for quite a long time on Macs with AMD GPUs, and it's only in 10.13 that it started to flicker similarly on NVIDIA GPUs. It's not a bug in the driver, but something Chrome's doing wrong.

This particular demo does a few uncommon operations, and the flickering's related to its use of the scissor rectangle in conjunction with the antialias:false context creation attribute. Investigating that now.

Project Member

Comment 13 by bugdroid1@chromium.org, Nov 9 2017

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

commit 400103206e96e1538627ba3af95740c2a4f0a359
Author: Eric Karl <ericrk@chromium.org>
Date: Thu Nov 09 19:23:47 2017

Revert "Allow blacklisting of use of GpuMemoryBuffers as render targets."

This reverts commit a28eb737c4c9424d7656ada19b688af854777968.

Further debugging indicates that this fix isn't addressing the original issues, and that the
WebGL issues likely have a different root cause.

TBR=kbr,piman,junov

Bug:  773705 ,  778770 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I2eba58f1c8e87773fa6ed51e0273adbe24e33174
Reviewed-on: https://chromium-review.googlesource.com/758964
Commit-Queue: Eric Karl <ericrk@chromium.org>
Reviewed-by: Justin Novosad <junov@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Eric Karl <ericrk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#515236}
[modify] https://crrev.com/400103206e96e1538627ba3af95740c2a4f0a359/cc/DEPS
[modify] https://crrev.com/400103206e96e1538627ba3af95740c2a4f0a359/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/400103206e96e1538627ba3af95740c2a4f0a359/content/renderer/pepper/ppb_graphics_3d_impl.cc
[modify] https://crrev.com/400103206e96e1538627ba3af95740c2a4f0a359/content/renderer/pepper/ppb_graphics_3d_impl.h
[modify] https://crrev.com/400103206e96e1538627ba3af95740c2a4f0a359/gpu/command_buffer/service/feature_info.cc
[modify] https://crrev.com/400103206e96e1538627ba3af95740c2a4f0a359/gpu/config/gpu_driver_bug_list.json
[modify] https://crrev.com/400103206e96e1538627ba3af95740c2a4f0a359/gpu/config/gpu_driver_bug_workaround_type.h
[modify] https://crrev.com/400103206e96e1538627ba3af95740c2a4f0a359/gpu/config/software_rendering_list.json
[modify] https://crrev.com/400103206e96e1538627ba3af95740c2a4f0a359/third_party/WebKit/Source/platform/graphics/CanvasResourceProvider.cpp
[modify] https://crrev.com/400103206e96e1538627ba3af95740c2a4f0a359/third_party/WebKit/Source/platform/graphics/DEPS
[modify] https://crrev.com/400103206e96e1538627ba3af95740c2a4f0a359/third_party/WebKit/Source/platform/graphics/gpu/DEPS
[modify] https://crrev.com/400103206e96e1538627ba3af95740c2a4f0a359/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp

Comment 14 Deleted

Comment 15 Deleted

High Sierra NVidia is not available with Chrome-TE HYD team, Requesting some one from MTV team to verify this issue.

Thanks! 


Project Member

Comment 17 by bugdroid1@chromium.org, Nov 14 2017

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

commit 5e916b7e8faaceb5b7a973299b3ebe63ceeabf5f
Author: Kenneth Russell <kbr@chromium.org>
Date: Tue Nov 14 06:19:40 2017

Disable scissor rectangle during implicit clears in RGB emulation path.

New conformance test being added in
https://github.com/KhronosGroup/WebGL/pull/2542 .

BUG= 778770 

Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I09332c8df9baa651ebfc0d4b6a94bb1f1e308faa
Reviewed-on: https://chromium-review.googlesource.com/765060
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#516210}
[modify] https://crrev.com/5e916b7e8faaceb5b7a973299b3ebe63ceeabf5f/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp

Comment 18 by kbr@chromium.org, Nov 18 2017

Status: Started (was: Assigned)
Project Member

Comment 19 by bugdroid1@chromium.org, Nov 18 2017

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

commit f9d1bf632952f7c909121b63b3b61183de7a8d53
Author: Kenneth Russell <kbr@chromium.org>
Date: Sat Nov 18 02:00:55 2017

Roll WebGL 12192b9..e4919fa

https://chromium.googlesource.com/external/khronosgroup/webgl.git/+log/12192b9..e4919fa

BUG= 775202 ,  778770 , 784817

TEST=bots

TBR=zmo@chromium.org, kainino@chromium.org

NOTRY=true

CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel

Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I296437377a0d5084f2ede5f50d6b6519436bc62f
Reviewed-on: https://chromium-review.googlesource.com/773625
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#517678}
[modify] https://crrev.com/f9d1bf632952f7c909121b63b3b61183de7a8d53/DEPS
[modify] https://crrev.com/f9d1bf632952f7c909121b63b3b61183de7a8d53/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
[modify] https://crrev.com/f9d1bf632952f7c909121b63b3b61183de7a8d53/content/test/gpu/gpu_tests/webgl_conformance_revision.txt

Comment 20 by kbr@chromium.org, Nov 18 2017

Status: Fixed (was: Started)
The bug's been fixed and a regression test has been added.

Sign in to add a comment