Issue metadata
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 descriptionUserAgent: 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.
,
Dec 19 2017
,
Dec 19 2017
Yeah, I can reproduce this on my Windows bot. On Mac it works fine. Bisecting ...
,
Dec 19 2017
Note that this is already fixed on Canary.
,
Dec 19 2017
https://chromium.googlesource.com/chromium/src/+/11b54cadcd04ea3b5650839abff6a6060d63e978 ANGLE roll is responsible
,
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.
,
Dec 19 2017
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.
,
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.
,
Dec 19 2017
,
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.
,
Dec 19 2017
Yeah, I'll email Jeff Gilbert @ Mozilla about the ANGLE bug.
,
Dec 19 2017
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.
,
Dec 20 2017
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.
,
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.
,
Dec 20 2017
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.
,
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?
,
Dec 21 2017
I think unbinding and re-binding the program should clear the dirty states in any case. Thanks for agreeing to port the tests.
,
Jan 4 2018
PR for the UBO conformance tests: https://github.com/KhronosGroup/WebGL/pull/2573
,
Jan 5 2018
Thanks for contributing these tests Tarek!
,
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 |
|||||||||||||||||||||||||
Comment 1 by krajshree@chromium.org
, Dec 19 2017