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

Issue 628472 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Email to this user bounced
Closed: Jul 2016
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocked on:
issue 607130

Blocking:
issue 784743



Sign in to add a comment

Regression: WebGL test conformance/state/state-uneffected-after-compositing.html fails with Intel Mesa driver

Project Member Reported by qiankun....@intel.com, Jul 15 2016

Issue description

What steps will reproduce the problem?
(1)  open chrome with command line: --enable-unsafe-es3-apis --use-gl=egl on Linux installed Intel graphics card with mesa driver
--use-gl=egl is required here to reproduce this bug because the driver supports GL_EXT_discard_framebuffer extension in gles context.
(2) open https://www.khronos.org/registry/webgl/sdk/tests/conformance/state/state-uneffected-after-compositing.html?webglVersion=1

What is the expected output?
All tests should pass.

What do you see instead?
The test fails at step3.

This regression is introduced in https://codereview.chromium.org/1950053003. This failed case draws something into bound fbo, then checks that fbo is still available in next frame. But chrome wrongly discards the fbo when it really wants to clear the default fbo.

I uploaded a fix for this bug: https://codereview.chromium.org/2145093003/.

 
Description: Show this description
Project Member

Comment 2 by bugdroid1@chromium.org, Jul 15 2016

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

commit fd383c4428d3a4e1041425214f001661dca8d173
Author: qiankun.miao <qiankun.miao@intel.com>
Date: Fri Jul 15 03:26:30 2016

Discard correct drawing buffer

This partly revert https://codereview.chromium.org/1950053003. On
platform supported GL_EXT_discard_framebuffer extension, it causes a
WebGL conformance test regression:
conformance/state/state-uneffected-after-compositing.html

The root cause is current bound fbo will be discarded other than the
default fbo. We should discard default fbo correctly.

BUG= 628472 

Review-Url: https://codereview.chromium.org/2145093003
Cr-Commit-Position: refs/heads/master@{#405689}

[modify] https://crrev.com/fd383c4428d3a4e1041425214f001661dca8d173/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp

Status: Fixed (was: Untriaged)

Comment 4 by yang...@intel.com, Jul 15 2016

This is a very interesting case, as we tried many combinations of OS and driver, and switched between GL and GLES mode, but only Linux+IntelMesa+GLES (with --use-gl=egl option) failed the case. After investigation, it turns out to be a bug inside Chromium, rather than a driver issue as we previously suspected. The issue is only triggered with extension "discard_framebuffer" valid. Below are the reasons why other combinations couldn't trigger the issue:

Linux+NVIDIA+GL: no support of extension "discard_framebuffer"
Linux+NVIDIA+GLES: has support of extension "discard_framebuffer", but it's disabled due to https://bugs.chromium.org/p/chromium/issues/detail?id=601753.
Linux+IntelMesa+GL: no support of extension "discard_framebuffer"
ChromeOS+IntelMesa+GLES: has support of extension "discard_framebuffer", but it's disabled due to https://bugs.chromium.org/p/chromium/issues/detail?id=301988 (a Mali issue, and I will follow up to see if Intel GEN GPU can work well).

So the conclusion is this is an ES extension, but for NVIDIA ES and ChromeOS (implying ES), the extension was disabled for different reasons. 

Comment 5 by zmo@chromium.org, Jul 15 2016

Ha, you won the lottery :)
Thanks for the thorough investigation!
Labels: ReleaseBlock-Stable M-53 Merge-Request-53

Comment 8 by dimu@chromium.org, Aug 24 2016

Labels: -Merge-Request-53 Merge-Approved-53 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M53 (branch: 2785)
Project Member

Comment 9 by bugdroid1@chromium.org, Aug 24 2016

Labels: -merge-approved-53 merge-merged-2785
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/87afbee2e2f123fc576d4274a563f2a628189501

commit 87afbee2e2f123fc576d4274a563f2a628189501
Author: erikchen <erikchen@chromium.org>
Date: Wed Aug 24 17:12:40 2016

[Merge to 2785] Discard correct drawing buffer

> This partly revert https://codereview.chromium.org/1950053003. On
> platform supported GL_EXT_discard_framebuffer extension, it causes a
> WebGL conformance test regression:
> conformance/state/state-uneffected-after-compositing.html
>
> The root cause is current bound fbo will be discarded other than the
> default fbo. We should discard default fbo correctly.
>
> BUG= 628472 
>
> Review-Url: https://codereview.chromium.org/2145093003
> Cr-Commit-Position: refs/heads/master@{#405689}
> (cherry picked from commit fd383c4428d3a4e1041425214f001661dca8d173)

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

Cr-Commit-Position: refs/branch-heads/2785@{#738}
Cr-Branched-From: 68623971be0cfc492a2cb0427d7f478e7b214c24-refs/heads/master@{#403382}

[modify] https://crrev.com/87afbee2e2f123fc576d4274a563f2a628189501/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp

Verified the fix on Ken's linux Machine(Thank you Ken) with Chrome M53(53.0.2785.89). 

Steps followed : 
1.  open chrome with command line: --enable-unsafe-es3-apis --use-gl=egl on Linux
2. open https://www.khronos.org/registry/webgl/sdk/tests/conformance/state/state-uneffected-after-compositing.html?webglVersion=1

Observed behavior :
All tests passed.

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

Blocking: 784743

Sign in to add a comment