tiomap-dev team mailing list archive
-
tiomap-dev team
-
Mailing list archive
-
Message #02589
[Bug 974170] Re: SGX omap4 drivers can't handle changing the contents of and reusing a VBO in multiple draw calls in the same frame
** Changed in: ubuntu-omap4-extras-graphics
Status: New => Fix Released
--
You received this bug notification because you are a member of TI OMAP
Developers, which is subscribed to ubuntu-omap4-extras-graphics.
https://bugs.launchpad.net/bugs/974170
Title:
SGX omap4 drivers can't handle changing the contents of and reusing a
VBO in multiple draw calls in the same frame
Status in Ubuntu OMAP4 graphics addons:
Fix Released
Bug description:
The SGX omap4 drivers can't handle changing the contents of and
reusing a VBO in multiple draw calls in the same frame. For example:
/* Upload data to the VBO, and draw */
glBindBuffer(GL_ARRAY_BUFFER, vbo)
glBufferData(...)
glVertexAttribPointer(...)
glDrawArrays(...)
/* Change the data held by the same vbo, and draw again */
glBindBuffer(GL_ARRAY_BUFFER, vbo)
glBufferData(...)
glVertexAttribPointer(...)
glDrawArrays(..)
eglSwapBuffers()
With SGX, both the first and second glDrawArrays(), end up using the
VBO contents set by the *second* glBufferData() call. The data
uploaded the first time is just ignored. The expected behavior is for
the first draw operation to use the data uploaded by the first
glBufferData() call, and the second draw operation to use the data
uploaded by the second glBufferData() call.
I have created a small example that exhibits this issue:
http://people.linaro.org/~afrantzis/reuse-vbo.tar.gz
Use the --separate-vbos option to draw using a separate VBO for each triangle (instead of a single VBO for both)
Use the --draw-line option to draw the second triangle using GL_LINE_LOOP (instead of GL_TRIANGLES), to make things visually clearer
I have attached two images showing the results of running the example
on SGX and on desktop r600g using GLES2 with various options. On r600g
the results are the same regardless of whether we are using a single
VBO or separate VBOs. On SGX, when using a single VBO, the first
triangle is drawn (erroneously) using the same vertex data as the
second triangle (passed in the second glBufferData()) call.
I think that https://bugs.launchpad.net/ubuntu-omap4-extras-
graphics/+bug/912280 is another expression of this problem.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-omap4-extras-graphics/+bug/974170/+subscriptions
References