Issue metadata
Sign in to add a comment
|
WebGL error - "glDrawArrays: transformfeedback buffers : buffer at index 0 is bound for transform feedback and other use simultaneously"
Reported by
evoda...@microsoft.com,
Jun 27 2018
|
||||||||||||||||||||
Issue descriptionUserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36 Steps to reproduce the problem: 1. Open attached sample. 2. Note WebGL errors in console. What is the expected behavior? No WebGL errors. What went wrong? I suspect this is related to this issue given how recently both issues appeared: https://bugs.chromium.org/p/chromium/issues/detail?id=853978&q=transform%20feedback%20component%3ABlink%3EWebGL&sort=-component&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified The problem is basically the same, I'm getting errors about a buffer bound for TF being bound to another binding point as well, when I'm pretty sure it's not. The suggested fix in that issue about also clearing the generic TRANSFORM_FEEDBACK_BUFFER binding point doesn't seem to have helped. My use case is a bit different in that I have a ring of three buffers that are used as follows: 1. When frame % 3 == 0, no previous TF output buffers are bound as input, but output is captured. 2. When frame % 3 == 1, the previously capture output is bound as input, and output is captured. 3. When frame % 3 == 2, the two previous frames are bound as input and output is captured. It's when looping back to the 0 case that I get the error in question. Since Firefox has shown the same problem for a while now I suspect this is going to turn out to be user error. But given that non-intuitive-ness of the transform feedback spec acknowledged in other issue maybe this can help improve the spec further? :-) Did this work before? Yes 66 Does this work in other browsers? No https://bugzilla.mozilla.org/show_bug.cgi?id=1465244 I've seen this problem in Firefox for a while now but it only recently started happening in Chrome (probably due to an update in the past week or so). Chrome version: 67.0.3396.99 Channel: stable OS Version: 10.0 Flash Version:
,
Jun 27 2018
An update: I tried creating three VAOs (one for each of my frame slices, rather than using the default/null VAO for everything) and that seems to have cleared up the problem. So I think the question becomes is having a buffer bound with vertexAttribPointer, but disabled with disableVertexAttribArray, still considered "bound for non-transform feedback"? If so is there any way to unbind such an attribute pointer, other than switching to a different VAO that has never had it bound before?
,
Jun 27 2018
Yes, a buffer that is bound to an attribute in the currently bound VAO is considered bound whether its attribute is enabled or not. It can be unbound by switching VAOs or by binding a different buffer to that attribute. The GL spec does not make an exception for "bound but disabled" buffers when talking about the legality of transform feedback, so I don't think we should change this behavior. |
|||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||
Comment 1 by kbr@chromium.org
, Jun 27 2018