New issue
Advanced search Search tips

Issue 796180 link

Starred by 1 user

Issue metadata

Status: Duplicate
Merged: issue 792966
Owner:
Closed: Dec 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug-Regression



Sign in to add a comment

WebGL 2 Regression: RGBA32F framebuffer ping-ponging instability on Windows

Reported by tshe...@gmail.com, Dec 19 2017

Issue description

UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36

Steps to reproduce the problem:
1. Visit this demo in Chrome on Windows: https://tsherif.github.io/picogl.js/examples/cloth.html

What is the expected behavior?
Cloth simulation

What went wrong?
Cloth breaks apart. Seems to be some kind of numerical instability. 

Did this work before? Yes 

Does this work in other browsers? Yes

Chrome version: 63.0.3239.84  Channel: stable
OS Version: 10.0
Flash Version: 

Not sure which version, but this simulation was used in this bug report, so it was working in Chrome on Windows in July of this year: https://bugs.chromium.org/p/chromium/issues/detail?id=735483

Works in Firefox on Windows, and both Chrome and Firefox on Ubuntu 16.04.

The simulation involves ping-ponging between two RGBA32F textures for the simulation, and I suspect that's where the issue is. 

I realize this is not a great example for a bug report, but if you guys can bisect and find what kind of update might have caused the regression, that would help me put together a more minimal example.
 
Labels: Needs-Triage-M63 Needs-Bisect
Components: Blink>WebGL

Comment 3 by zmo@chromium.org, Dec 19 2017

Owner: zmo@chromium.org
Status: Assigned (was: Unconfirmed)
Yeah, I can reproduce this on my Windows bot. On Mac it works fine.

Bisecting ...

Comment 4 by zmo@chromium.org, Dec 19 2017

Note that this is already fixed on Canary.

Comment 6 by tshe...@gmail.com, Dec 19 2017

Thanks, Mo. Any idea where the breakage was? I'll try to figure out a workaround in the meantime if I can get an idea of what exactly the issue is.

Comment 7 by kbr@chromium.org, Dec 19 2017

Cc: jmad...@chromium.org
Components: Internals>GPU>ANGLE
Lots of dirty bit changes in that roll. Good that it's fixed now, but would be good to know which it was.

Tarek, it would be most helpful if you could occasionally test with Chrome Beta (at least, if not also Chrome Dev/Canary). The release channels can now be installed side-by-side on Windows.

Comment 8 by zmo@chromium.org, Dec 19 2017

This is a bug introduced by dirty-bit optimization in ANGLE. The fix has already landed in M63 so the next push will get the bug fixed (I don't know when is the next bug fix push though).

Beta and Canary already has this bug fixed.

Comment 9 by zmo@chromium.org, Dec 19 2017

Mergedinto: 792966
Status: Duplicate (was: Assigned)

Comment 10 by tshe...@gmail.com, Dec 19 2017

Good to know, Ken. Will do. Thanks for the info, Mo.

BTW, is there a way to avoid Firefox using the buggy version of ANGLE? Maybe mark it as problematic. I know they tend to use a slightly older version than Chrome does. It would be a shame for them to introduce this bug into Firefox after it's already been fixed.

Comment 11 by zmo@chromium.org, Dec 19 2017

Yeah, I'll email Jeff Gilbert @ Mozilla about the ANGLE bug.
tsherif: We have some WebGL tests in place, and it's on me to add additional WebGL tests to ensure other browsers use the updated ANGLE. If anyone feels like helping here I can point you to the ANGLE tests that would need to be translated to javascript.
Yep, we have a problematic version in Firefox 58.

We can't pull in a new ANGLE update this late in Beta, so we'll be looking at patching what we have.

Thanks for the heads-up.

Comment 14 by tshe...@gmail.com, Dec 20 2017

jmadill: If you can point me to the ANGLE tests and let me know where they should go in the conformance suite, I'd be happy to help with that.
tsherif:

in angle's src/tests/gl_tests/UniformBufferTest.cpp, UniformBufferTest.SimpleBindingChange is based on a test Mo added to the WebGL CTS here: https://github.com/KhronosGroup/WebGL/pull/2559. However there are two other test cases that should be ported:

UniformBufferTest.SimpleBufferChange and UniformBufferTest.DependentBufferChange. You could probably add these to the same test file.

Additionally there were other dirty bit bug tests:

src/tests/gl_tests/VertexAttributeTest.cpp: VertexAttributeTest.DisabledAttribUpdates (related to  issue 779675 )

src/tests/gl_tests/StateChangeTest.cpp:
StateChangeTest.VertexBufferUpdatedAfterDraw and StateChangeTestES3.VertexArrayObjectAndDisabledAttributes (related to  issue 778689 )

Note that a few might have to be WebGL-2 only and some can be WebGL 1. Thanks if you can help porting these.

Comment 16 by tshe...@gmail.com, Dec 21 2017

jmadill: Sure those look pretty straightforward to port. I can probably get something ready in a week or so.

BTW, Is there a way to trigger UBO binding dirty state through the GL in the meantime?
I think unbinding and re-binding the program should clear the dirty states in any case. Thanks for agreeing to port the tests.

Comment 18 by tshe...@gmail.com, Jan 4 2018

PR for the UBO conformance tests: https://github.com/KhronosGroup/WebGL/pull/2573

Comment 19 by kbr@chromium.org, Jan 5 2018

Thanks for contributing these tests Tarek!

Comment 20 by tshe...@gmail.com, Feb 22 2018

PR for the rest of the dirty bit conformance tests: https://github.com/KhronosGroup/WebGL/pull/2600

Sign in to add a comment