WebGL Corruption on High Sierra NVidia machines |
|||||||||
Issue descriptionWhen 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.
,
Oct 26 2017
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?
,
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
,
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?
,
Oct 26 2017
ccameron recently made some changes
,
Oct 27 2017
,
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.
,
Oct 30 2017
,
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
,
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 .
,
Nov 3 2017
,
Nov 9 2017
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.
,
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
,
Nov 10 2017
High Sierra NVidia is not available with Chrome-TE HYD team, Requesting some one from MTV team to verify this issue. Thanks!
,
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
,
Nov 18 2017
,
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
,
Nov 18 2017
The bug's been fixed and a regression test has been added. |
|||||||||
►
Sign in to add a comment |
|||||||||
Comment 1 by ericrk@chromium.org
, Oct 26 2017Owner: ----