Issue metadata
Sign in to add a comment
|
Antialiased Three.js WebGL contexts broken on explicit framebuffer resolve code path |
|||||||||||||||||||||||||||||||||||||
Issue descriptionRepro: On a Qualcomm 4xx/5xx configuration, modify the build to remove "disable_chromium_framebuffer_multisample" and also disable EXT_multisampled_render_to_texture. Load https://threejs.org/examples/webgl_lines_sphere.html It should render only in the corner of the screen. More info: https://bugs.chromium.org/p/chromium/issues/detail?id=682075&desc=2#c8
,
Feb 25 2017
I'm going to make this P3 for now since it _shouldn't_ affect any actual devices. (If it does, it would be Qualcomm GPUs supporting ES3 but not EXT_multisampled_render_to_texture.)
,
Feb 25 2017
,
Feb 25 2017
,
Feb 27 2017
,
May 1 2017
Just downloaded Chrome 57 on my Sony Xperia Z5 and noticed a client's WebGL site was broken (rendering in the bottom left corner). I was in the middle of doing some WebVR work and it took me a good 2 hours to realise I hadn't actually broken anything but rather it was the Chrome update. Here is a real world screenshots of a three.js example failing to render on my Sony Xperia Z5.
,
May 1 2017
#6 could you please provide the contents of the page chrome://gpu from your phone? Select all/copy-paste is fine. Chrome 58 is rolling out now; please test with that and tell us whether it fixes the issue. Upgrading to P2 until the cause is known.
,
May 1 2017
,
May 1 2017
,
May 1 2017
,
May 1 2017
We got an Xperia Z5 and are able to reproduce, about:gpu no longer needed.
,
May 1 2017
,
May 1 2017
FYI my original comment: > I'm going to make this P3 for now since it _shouldn't_ affect any actual devices. (If it does, it would be Qualcomm GPUs supporting ES3 but not EXT_multisampled_render_to_texture.) was technically wrong; this was seen on Android 7.0 because there was a workaround disabling EXT_multisampled_render_to_texture on Android 7.0.
,
May 2 2017
kbr: I think it's reasonable to request merge to 59, WDYT?
,
May 2 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/586c01de3897c0aa2d9911ff703c51595cf22f62 commit 586c01de3897c0aa2d9911ff703c51595cf22f62 Author: kainino <kainino@chromium.org> Date: Tue May 02 00:35:32 2017 Disable explicit multisample resolve (and webgl2) on Adreno 4xx on Android 7.0 This was seen on Sony Xperia Z5 (Adreno 430). BUG= 696126 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 Review-Url: https://codereview.chromium.org/2855583003 Cr-Commit-Position: refs/heads/master@{#468507} [modify] https://crrev.com/586c01de3897c0aa2d9911ff703c51595cf22f62/gpu/config/gpu_driver_bug_list.json [modify] https://crrev.com/586c01de3897c0aa2d9911ff703c51595cf22f62/gpu/config/software_rendering_list.json
,
May 2 2017
Discussed offline, we think it would be good to merge #15 back to 59. This bug affects at least the Xperia Z5 and any other devices which have Adreno 4xx and Android 7.0, and it affects a huge portion of WebGL 1.0 content in the wild. It may require a manual merge-back but if so the manual intervention needed will be trivial.
,
May 2 2017
Your change meets the bar and is auto-approved for M59. Please go ahead and merge the CL to branch 3071 manually. Please contact milestone owner if you have questions. Owners: amineer@(Android), cmasso@(iOS), gkihumba@(ChromeOS), Abdul Syed@(Desktop) For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
May 3 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/defd2ab4d932401f984477b775df943d4ab2f894 commit defd2ab4d932401f984477b775df943d4ab2f894 Author: Kai Ninomiya <kainino@chromium.org> Date: Wed May 03 00:31:34 2017 Disable explicit multisample resolve (and webgl2) on Adreno 4xx on Android 7.0 This was seen on Sony Xperia Z5 (Adreno 430). BUG= 696126 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 Review-Url: https://codereview.chromium.org/2855583003 Cr-Commit-Position: refs/heads/master@{#468507} (cherry picked from commit 586c01de3897c0aa2d9911ff703c51595cf22f62) Review-Url: https://codereview.chromium.org/2861433003 . Cr-Commit-Position: refs/branch-heads/3071@{#366} Cr-Branched-From: a106f0abbf69dad349d4aaf4bcc4f5d376dd2377-refs/heads/master@{#464641} [modify] https://crrev.com/defd2ab4d932401f984477b775df943d4ab2f894/gpu/config/gpu_driver_bug_list.json [modify] https://crrev.com/defd2ab4d932401f984477b775df943d4ab2f894/gpu/config/software_rendering_list.json
,
May 3 2017
Although this issue was originally intended to track some potential issue inside the explicit framebuffer resolve path, it seems plausible that that issue was not with Chrome but instead with the driver (since it seems to correspond with broken EXT_multisampled_render_to_texture implementations). As such, I'm going to close it. Hopefully it will be found if issues like this continue to crop up.
,
May 24 2017
Issue 724398 has been merged into this issue.
,
May 24 2017
This issue is still appearing on Redmi Note 3 and some Galaxy Tab S2 devices (I think those with Adreno 5xx).
,
May 24 2017
It's due to gpu driver bug list entry #175: > Adreno 5xx support for EXT_multisampled_render_to_texture is buggy on Android < 7.0 I'll see if I can fix all of the workarounds that disable EXT_multisampled_render_to_texture.
,
May 25 2017
I've finally been able to track down the root cause of this issue. Resizing (reallocating) renderbuffers is buggy on Adreno 4xx/5xx - the small rectangle in the corner of these demos is the canvas initial size. Deleting and re-creating the renderbuffer in the DrawingBuffer works around the issue for antialias:true canvases (but a more general workaround will be needed for WebGL 2.0).
,
May 26 2017
Issue 726670 has been merged into this issue.
,
May 26 2017
There is more to this bug than just a driver bug. I've written a conformance test and it fails in Chrome but passes in Firefox. I think there is a slight state difference between Chrome and Firefox that causes Chrome to trigger the issue. For now I will do the quick fix for the many users encountering this issue, and merge back to M59. Then I will dig deeper and find a real fix or workaround.
,
May 26 2017
,
May 26 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cb0593b3d8106439bdd6f20ef62f1319529f02f8 commit cb0593b3d8106439bdd6f20ef62f1319529f02f8 Author: Kai Ninomiya <kainino@chromium.org> Date: Fri May 26 22:19:35 2017 Disable explicit multisample resolve on more configs This sets disable_chromium_framebuffer_multisample on the 3 remaining Adreno configurations which had disabled EXT_multisampled_render_to_texture (which was triggering the explicit multisample resolve path, which is buggy at least on Adreo 4xx/5xx). This also re-enables WebGL 2 for one category of devices with this bug. The bug has been tracked down and determined to not be that serious (not likely to affect very much web content). Once we have an actual fix or workaround for the issue, disable_chromium_framebuffer_multisample will be removed for these configurations, and the WebGL 2.0 behavior should be fixed as well. Bug: 696126 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: Id6011b473a25094ad2e116218dd9d36ad4a8f2a9 Reviewed-on: https://chromium-review.googlesource.com/517289 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Kai Ninomiya <kainino@chromium.org> Cr-Commit-Position: refs/heads/master@{#475161} [modify] https://crrev.com/cb0593b3d8106439bdd6f20ef62f1319529f02f8/gpu/config/gpu_driver_bug_list.json [modify] https://crrev.com/cb0593b3d8106439bdd6f20ef62f1319529f02f8/gpu/config/software_rendering_list.json
,
May 26 2017
Requesting merge of #28 (cb0593b3d8106439bdd6f20ef62f1319529f02f8) to M59. It is a highly targeted workaround (only changing the workarounds list) for a serious regression affecting most WebGL content on many common Android GPU configurations. Unfortunately this hole in the workarounds list was only discovered very recently. However, the exact same workaround has been in use for months to fix the same bug on extremely similar configurations.
,
May 26 2017
This bug requires manual review: We are only 10 days from stable. Please contact the milestone owner if you have questions. Owners: amineer@(Android), cmasso@(iOS), gkihumba@(ChromeOS), Abdul Syed@(Desktop) For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
May 26 2017
Approved for M59 branch 3071.
,
May 26 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0a3fb87b8738ce6447646e07fba1ef9f555bcb50 commit 0a3fb87b8738ce6447646e07fba1ef9f555bcb50 Author: Kai Ninomiya <kainino@chromium.org> Date: Fri May 26 23:21:20 2017 [M59] Disable explicit multisample resolve on more configs This sets disable_chromium_framebuffer_multisample on the 3 remaining Adreno configurations which had disabled EXT_multisampled_render_to_texture (which was triggering the explicit multisample resolve path, which is buggy at least on Adreo 4xx/5xx). This also re-enables WebGL 2 for one category of devices with this bug. The bug has been tracked down and determined to not be that serious (not likely to affect very much web content). [M59 only] On the M59 branch, the same changes apply to the entries added in https://codereview.chromium.org/2912493002 . Once we have an actual fix or workaround for the issue, disable_chromium_framebuffer_multisample will be removed for these configurations, and the WebGL 2.0 behavior should be fixed as well. TBR=kainino@chromium.org Bug: 696126 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: Id6011b473a25094ad2e116218dd9d36ad4a8f2a9 Reviewed-on: https://chromium-review.googlesource.com/517289 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Kai Ninomiya <kainino@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#475161}(cherry picked from commit cb0593b3d8106439bdd6f20ef62f1319529f02f8) Reviewed-on: https://chromium-review.googlesource.com/517436 Reviewed-by: Kai Ninomiya <kainino@chromium.org> Cr-Commit-Position: refs/branch-heads/3071@{#710} Cr-Branched-From: a106f0abbf69dad349d4aaf4bcc4f5d376dd2377-refs/heads/master@{#464641} [modify] https://crrev.com/0a3fb87b8738ce6447646e07fba1ef9f555bcb50/gpu/config/gpu_driver_bug_list.json [modify] https://crrev.com/0a3fb87b8738ce6447646e07fba1ef9f555bcb50/gpu/config/software_rendering_list.json
,
May 31 2017
Dropping back to P2 since the workarounds have been merged to 59.
,
Jun 6 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/821895efec24b5b1815b2c0b11a9bed1075b3433 commit 821895efec24b5b1815b2c0b11a9bed1075b3433 Author: Kai Ninomiya <kainino@chromium.org> Date: Tue Jun 06 17:46:06 2017 Make renderbuffers track framebuffers that use them This makes it possible to swap out the service_id of a renderbuffer without breaking framebuffers, needed for issue 696126 . It also allows for a few optimizations left as TODOs by gman. Bug: 696126 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: Ia934746af0fd9da61c7fa6f8512414d19bafed6d Reviewed-on: https://chromium-review.googlesource.com/521803 Commit-Queue: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Cr-Commit-Position: refs/heads/master@{#477332} [modify] https://crrev.com/821895efec24b5b1815b2c0b11a9bed1075b3433/gpu/command_buffer/service/framebuffer_manager.cc [modify] https://crrev.com/821895efec24b5b1815b2c0b11a9bed1075b3433/gpu/command_buffer/service/framebuffer_manager.h [modify] https://crrev.com/821895efec24b5b1815b2c0b11a9bed1075b3433/gpu/command_buffer/service/framebuffer_manager_unittest.cc [modify] https://crrev.com/821895efec24b5b1815b2c0b11a9bed1075b3433/gpu/command_buffer/service/gles2_cmd_decoder.cc [modify] https://crrev.com/821895efec24b5b1815b2c0b11a9bed1075b3433/gpu/command_buffer/service/renderbuffer_manager.cc [modify] https://crrev.com/821895efec24b5b1815b2c0b11a9bed1075b3433/gpu/command_buffer/service/renderbuffer_manager.h [modify] https://crrev.com/821895efec24b5b1815b2c0b11a9bed1075b3433/gpu/command_buffer/service/renderbuffer_manager_unittest.cc
,
Jun 8 2017
,
Jun 9 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/10b29d38bbd2eb90d7d93fb07214d468f7af7dde commit 10b29d38bbd2eb90d7d93fb07214d468f7af7dde Author: Kai Ninomiya <kainino@chromium.org> Date: Fri Jun 09 20:34:32 2017 Workaround for Qualcomm renderbuffer resize bug Also re-enables the explicit resolve path on the Qualcomm devices which have EXT_multisampled_render_to_texture disabled. Bug: 696126 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: Ic4d98095fca206dc769bac6ba8c832bb50093f41 Reviewed-on: https://chromium-review.googlesource.com/520883 Commit-Queue: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Cr-Commit-Position: refs/heads/master@{#478399} [modify] https://crrev.com/10b29d38bbd2eb90d7d93fb07214d468f7af7dde/gpu/command_buffer/service/gles2_cmd_decoder.cc [modify] https://crrev.com/10b29d38bbd2eb90d7d93fb07214d468f7af7dde/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc [modify] https://crrev.com/10b29d38bbd2eb90d7d93fb07214d468f7af7dde/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h [modify] https://crrev.com/10b29d38bbd2eb90d7d93fb07214d468f7af7dde/gpu/command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc [modify] https://crrev.com/10b29d38bbd2eb90d7d93fb07214d468f7af7dde/gpu/command_buffer/service/renderbuffer_manager.cc [modify] https://crrev.com/10b29d38bbd2eb90d7d93fb07214d468f7af7dde/gpu/command_buffer/service/renderbuffer_manager.h [modify] https://crrev.com/10b29d38bbd2eb90d7d93fb07214d468f7af7dde/gpu/config/gpu_driver_bug_list.json [modify] https://crrev.com/10b29d38bbd2eb90d7d93fb07214d468f7af7dde/gpu/config/gpu_driver_bug_workaround_type.h
,
Jun 9 2017
Fixed!
,
Jun 9 2017
Very nice work Kai!
,
Jun 15 2017
So this was reverted without referencing this bug: https://codereview.chromium.org/2936973003 Also multisample is currently broken in Android O and we are trying to push qualcomm to fix the driver before final release. But looks like this workaround will fix that issue as well. That's internal b/37985607 for reference
,
Jun 16 2017
,
Jun 16 2017
Taking this while Kai's on vacation. It's quite unfortunate that that workaround was reverted. Will try to work with Chrome OS team to understand why it affected ARM Chromebooks.
,
Jun 17 2017
https://chromium-review.googlesource.com/538883 up for review re-landing Kai's patch with a fix for ARM Chromebooks. The problem was that the EXT_multisampled_render_to_texture code path wasn't guaranteed to be taken when the client called glRenderbufferStorageMultisampleEXT.
,
Jun 19 2017
Issue 733954 has been merged into this issue.
,
Jun 19 2017
,
Jun 20 2017
Fix has been relanded as https://chromium-review.googlesource.com/c/538883/ . Hopefully an update will be posted here by bugdroid soon. Giving this bug back to Kai who did all the work on it. Please tell us ASAP if there is a problem with the revised fix.
,
Jun 20 2017
,
Jun 23 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7be4431e25e99b26dc68a89df81c48b2af74143c commit 7be4431e25e99b26dc68a89df81c48b2af74143c Author: zmo <zmo@chromium.org> Date: Fri Jun 23 22:59:51 2017 Roll WebGL 331fe3a..9ffa3b5 https://chromium.googlesource.com/external/khronosgroup/webgl.git/+log/331fe3a..9ffa3b5 BUG= 736070 , 696126 TEST=bots TBR=kbr@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 Review-Url: https://codereview.chromium.org/2957683002 Cr-Commit-Position: refs/heads/master@{#482060} [modify] https://crrev.com/7be4431e25e99b26dc68a89df81c48b2af74143c/DEPS [modify] https://crrev.com/7be4431e25e99b26dc68a89df81c48b2af74143c/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py [modify] https://crrev.com/7be4431e25e99b26dc68a89df81c48b2af74143c/content/test/gpu/gpu_tests/webgl_conformance_revision.txt
,
Jun 23 2017
Note that the depth texture initialization test failed on Mac.
,
Jun 26 2017
,
Jun 28 2017
,
Jun 29 2017
,
Jun 30 2017
,
Aug 16 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ae213d06e7dfe13bcfde08d450a3a4181f560c08 commit ae213d06e7dfe13bcfde08d450a3a4181f560c08 Author: Kai Ninomiya <kainino@chromium.org> Date: Wed Aug 16 00:16:03 2017 DCHECKs that I should have added in 821895efec24 Bug: 696126 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: I49d33ad551d77b8eeaccfef5483f2ef4ca05dbfd Reviewed-on: https://chromium-review.googlesource.com/614692 Commit-Queue: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Cr-Commit-Position: refs/heads/master@{#494624} [modify] https://crrev.com/ae213d06e7dfe13bcfde08d450a3a4181f560c08/gpu/command_buffer/service/framebuffer_manager.cc [modify] https://crrev.com/ae213d06e7dfe13bcfde08d450a3a4181f560c08/gpu/command_buffer/service/renderbuffer_manager.cc
,
Aug 16 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/d96fab60c64fd6109ab92cfdfa96c426b7faa349 commit d96fab60c64fd6109ab92cfdfa96c426b7faa349 Author: Kai Ninomiya <kainino@chromium.org> Date: Wed Aug 16 23:07:13 2017 Disable explicit multisample resolve on more configs This sets disable_chromium_framebuffer_multisample on the 3 remaining Adreno configurations which had disabled EXT_multisampled_render_to_texture (which was triggering the explicit multisample resolve path, which is buggy at least on Adreo 4xx/5xx). This also re-enables WebGL 2 for one category of devices with this bug. The bug has been tracked down and determined to not be that serious (not likely to affect very much web content). Once we have an actual fix or workaround for the issue, disable_chromium_framebuffer_multisample will be removed for these configurations, and the WebGL 2.0 behavior should be fixed as well. TBR=kainino@chromium.org Bug: 696126 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: Id6011b473a25094ad2e116218dd9d36ad4a8f2a9 Reviewed-on: https://chromium-review.googlesource.com/517289 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Kai Ninomiya <kainino@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#475161}(cherry picked from commit cb0593b3d8106439bdd6f20ef62f1319529f02f8) Reviewed-on: https://chromium-review.googlesource.com/617749 Reviewed-by: Kai Ninomiya <kainino@chromium.org> Cr-Commit-Position: refs/branch-heads/3112@{#734} Cr-Branched-From: b6460e24cf59f429d69de255538d0fc7a425ccf9-refs/heads/master@{#474897} [modify] https://crrev.com/d96fab60c64fd6109ab92cfdfa96c426b7faa349/gpu/config/gpu_driver_bug_list.json [modify] https://crrev.com/d96fab60c64fd6109ab92cfdfa96c426b7faa349/gpu/config/software_rendering_list.json
,
Sep 19 2017
The underlying driver bug is reported as fixed in msm8996: O15 release of Adreno ESX driver with GCC msm8994: O15 release of Adreno ESX driver with GCC It's in my todo list to verify.
,
Oct 17 2017
,
Nov 21 2017
,
Jan 23 2018
For the record: Testing for this bug was added to the WebGL CTS: https://github.com/KhronosGroup/WebGL/blob/master/sdk/tests/conformance2/renderbuffers/multisampled-renderbuffer-initialization.html And I've just added a test to dEQP: https://android-review.googlesource.com/c/platform/external/deqp/+/585790 |
||||||||||||||||||||||||||||||||||||||
►
Sign in to add a comment |
||||||||||||||||||||||||||||||||||||||
Comment 1 by kainino@chromium.org
, Feb 25 2017204 KB
204 KB Download