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

Issue 648466 link

Starred by 8 users

Issue metadata

Status: Fixed
Owner:
Closed: Sep 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 1
Type: Bug

Blocked on:
issue 581777
issue 595948

Blocking:
issue 649053
issue 649192
issue 680154



Sign in to add a comment

Problem with RGB IOSurface emulation on AMD Radeon HD 6750M GPUs in M54

Project Member Reported by kbr@chromium.org, Sep 20 2016

Issue description

In https://github.com/mrdoob/three.js/issues/9685 it has been reported by some users of the Three.js library that WebGL canvases allocated with the context creation attribute "alpha: false" aren't being composited correctly. Passing the command line argument:

--disable-features=WebGLImageChromium

works around the problem.

This is an old AMD GPU and it's likely there's a bug in Core Animation's handling of the IOSurfaces that Chrome hands to it.

Is it feasible to blacklist the use of WebGLImageChromium on this configuration? Is the non-IOSurface path going to be well supported in the future?

Erik, may I assign this bug to you?

 
ok

Comment 2 by kbr@chromium.org, Sep 20 2016

Status: WontFix (was: Assigned)
Sorry for the noise. It sounds like the folks hadn't tested on Chrome Canary (55), and that it's working for them. I suspect this is a bug you fixed a while ago.

Comment 3 by kbr@chromium.org, Sep 21 2016

Labels: -Pri-3 M-54 ReleaseBlock-Stable Pri-1
Status: Assigned (was: WontFix)
Unfortunately per https://github.com/mrdoob/three.js/issues/9685#issuecomment-248776127 it looks like this was still broken in M54. I think the associated pixel tests and final fixes only went into M55.

Can we disable the use of WebGLImageChromium by default in the M54 branch? Erik, what do you think about this?

Comment 4 by kbr@chromium.org, Sep 21 2016

Summary: Problem with RGB IOSurface emulation on AMD Radeon HD 6750M GPUs in M54 (was: Problem with RGB IOSurface emulation on AMD Radeon HD 6750M GPUs)
I wasn't aware of any ChromiumImage related WebGL fixes that aren't in M54. 

Comment 6 by kbr@chromium.org, Sep 22 2016

Darn. Can you think of why this would be working in M55?

I wish we could reproduce this in house. I've tried on my available machines but it doesn't reproduce.

The CA compositor [and WebGL's interaction] hasn't changed much since M54.

Maybe a non-deterministic bug associated with the GPU? I guess we turned on CoreProfile in M55?

Comment 8 by kbr@chromium.org, Sep 22 2016

That might be the essential difference. Let's see what the response to https://github.com/mrdoob/three.js/issues/9685#issuecomment-248781433 is.

Comment 9 by kbr@chromium.org, Sep 22 2016

https://github.com/mrdoob/three.js/issues/9685#issuecomment-248793695 indicates that --disable-features=WebGLImageChromium does work around the problem on the AMD Radeon HD 6750M in Chrome 54.

What should we do? Adding a new blacklist entry in the M54 tree is not a good option due to the amount of new code that would have to be added.

This particular problem seems to be resolved in M55, but  Issue 649053 , reported against the same machines, seems to not be.

Comment 10 by kbr@chromium.org, Sep 22 2016

Blocking: 649053

Comment 11 by kbr@chromium.org, Sep 22 2016

Blocking: 649192

Comment 12 by kbr@chromium.org, Sep 22 2016

Cc: kbr@chromium.org zmo@chromium.org erikc...@chromium.org
 Issue 649053  has been merged into this issue.

Comment 13 by kbr@chromium.org, Sep 22 2016

Components: Internals>GPU>Internals
Per https://bugs.chromium.org/p/chromium/issues/detail?id=649053#c15 it is clear there is a problem with this code path on older AMD GPUs. What is needed:

1) Add a GPU driver bug workaround type for disabling the new code path; https://codereview.chromium.org/2354423002/ is a recent, simple and small example

2) Use the GPU blacklist to disable the new code path on GPUs of vendor ID 0x1002 and device IDs 0x6720 and 0x6741 on macOS

3) Make sure the GPU pixel tests on the bots cover both code paths

4) Turn off the experiment on Dev/Canary

Erik, can you take these tasks? Let me know if you're swamped. This is pretty high priority since WebGL is broken for users of old iMacs.

We should also really turn off the new code path completely on M54.

WebGL Image Chromium has been enabled by default since M53, which first started rolling out around 8/31:
https://googlechromereleases.blogspot.com/2016/08/stable-channel-update-for-desktop_31.html
"""
 [Reland 1] Reenable WebGL Image Chromium.
    
    The feature was disabled because of two bugs. Both have since been fixed.
    
    BUG= 617249 ,  581777 
    TBR=piman@chromium.org, kbr@chromium.org
    
    Review-Url: https://codereview.chromium.org/2085573002
    Cr-Commit-Position: refs/heads/master@{#400709}
"""

> We should also really turn off the new code path completely on M54.
I'm happy to start blacklisting WebGL Image Chromium on particular devices, but turning off the feature entirely any time we find a GPU on which it doesn't work seems like overkill. I bet that devices between, and around [0x6720, 0x6741] probably don't work either. 

(1), (2) Okay, can do.
(3) We already have those: see tests with "shared_page_state_class=WebGLNonChromiumImageSharedPageState". 
(4) Okay, can do.


fwiw, this issue is strongly reminiscent of an issue we've seen on old AMD GPUS:
https://cs.chromium.org/chromium/src/gpu/config/gpu_driver_bug_list_json.cc?q=disable_webgl_rgb_multisampling_usage&sq=package:chromium&dr=C&l=1682

The workaround only applies to the device 0x68b8. I bet that extending it to the devices you mentioned will also fix the problem.
I tested this out on my old AMD gpu. When I turn off the workaround, I get the same bug. So this is fixable simply by expanding the workaround to include those devices.

Comment 17 by kbr@chromium.org, Sep 23 2016

Awesome. Thank you for realizing that it was that problem.

Project Member

Comment 18 by bugdroid1@chromium.org, Sep 23 2016

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

commit e9a527e058e65fcbfc37b817a5ef7e6693fbb209
Author: erikchen <erikchen@chromium.org>
Date: Fri Sep 23 22:46:29 2016

Expand the list of devices that require a GPU workaround.

Old AMD devices are known to require a workaround for colormasks on multisample
renderbuffers. This CL expands the list of devices known to need this
workaround.

BUG= 648466 
CQ_INCLUDE_TRYBOTS=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/2363833002
Cr-Commit-Position: refs/heads/master@{#420756}

[modify] https://crrev.com/e9a527e058e65fcbfc37b817a5ef7e6693fbb209/gpu/config/gpu_driver_bug_list_json.cc

Labels: Merge-Request-54
Status: Fixed (was: Assigned)

Comment 21 by pkir...@gmail.com, Sep 24 2016

I have a question. 

If I set the canvas alpha:false - 
   Then I still want the render target to be BGRA(X), but the presentation mode of the canvas should ignore A(X) channel and show it opaque.

Why do I need ColorMask here ?
 

Comment 22 by dimu@chromium.org, Sep 24 2016

Labels: -Merge-Request-54 Merge-Approved-54 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M54 (branch: 2840)

Comment 23 by kbr@chromium.org, Sep 25 2016

Blocking: -649192

Comment 24 by kbr@chromium.org, Sep 25 2016

Blocking: 649192
 Issue 649192  has been merged into this issue.
pkirill: The internal representation uses an RGBA IOSurface-backed texture, which needs the A-channel cleared to 1.
Project Member

Comment 26 by bugdroid1@chromium.org, Sep 26 2016

Labels: -merge-approved-54 merge-merged-2840
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0c26055fb6018dc18d1b4c5b27273dbb52a6c75b

commit 0c26055fb6018dc18d1b4c5b27273dbb52a6c75b
Author: erikchen <erikchen@chromium.org>
Date: Mon Sep 26 16:57:01 2016

[Merge to 2840] Expand the list of devices that require a GPU workaround.

> Old AMD devices are known to require a workaround for colormasks on multisample
> renderbuffers. This CL expands the list of devices known to need this
> workaround.
>
> BUG= 648466 
> CQ_INCLUDE_TRYBOTS=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/2363833002
> Cr-Commit-Position: refs/heads/master@{#420756}
> (cherry picked from commit e9a527e058e65fcbfc37b817a5ef7e6693fbb209)

Review URL: https://codereview.chromium.org/2375443002 .

Cr-Commit-Position: refs/branch-heads/2840@{#530}
Cr-Branched-From: 1ae106dbab4bddd85132d5b75c670794311f4c57-refs/heads/master@{#414607}

[modify] https://crrev.com/0c26055fb6018dc18d1b4c5b27273dbb52a6c75b/gpu/config/gpu_driver_bug_list_json.cc

Project Member

Comment 27 by bugdroid1@chromium.org, Oct 27 2016

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

commit 0c26055fb6018dc18d1b4c5b27273dbb52a6c75b
Author: erikchen <erikchen@chromium.org>
Date: Mon Sep 26 16:57:01 2016

[Merge to 2840] Expand the list of devices that require a GPU workaround.

> Old AMD devices are known to require a workaround for colormasks on multisample
> renderbuffers. This CL expands the list of devices known to need this
> workaround.
>
> BUG= 648466 
> CQ_INCLUDE_TRYBOTS=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/2363833002
> Cr-Commit-Position: refs/heads/master@{#420756}
> (cherry picked from commit e9a527e058e65fcbfc37b817a5ef7e6693fbb209)

Review URL: https://codereview.chromium.org/2375443002 .

Cr-Commit-Position: refs/branch-heads/2840@{#530}
Cr-Branched-From: 1ae106dbab4bddd85132d5b75c670794311f4c57-refs/heads/master@{#414607}

[modify] https://crrev.com/0c26055fb6018dc18d1b4c5b27273dbb52a6c75b/gpu/config/gpu_driver_bug_list_json.cc

Comment 28 by kbr@chromium.org, Jan 11 2017

Blockedon: 595948

Comment 29 by kbr@chromium.org, Jan 11 2017

Blocking: 680154

Comment 30 by kbr@chromium.org, Feb 23 2017

Cc: kainino@chromium.org
 Issue 695051  has been merged into this issue.

Sign in to add a comment