Forums - VAO Issues (Nexus 7 2013, 5.1.1, GLES2)

5 posts / 0 new
Last post
VAO Issues (Nexus 7 2013, 5.1.1, GLES2)
Richard Turnbull
Join Date: 3 Feb 12
Location: Oxfordshire
Posts: 5
Posted: Wed, 2015-06-03 02:48

Hi,

I'm encountering a couple of errors when using VAOs with 'glBufferSubData' and 'glDrawElements'. All my inputs _seem_ correct but obviously something is awry:

W/Adreno-ES20( 7259): <core_glBufferSubData:1383>: GL_INVALID_VALUE
W/Adreno-ES20( 5905): <gl_draw_error_checks:624>: GL_INVALID_OPERATION

I'm wondering whether anyone could provide me with an idea of what could be causing this from, what I assume, is the source code lines thrown in the error output above?

UPDATE: If I remove the call I'm making to 'glDeleteVertexArraysOES' the above issues go away.

Cheers,
Richard

  • Up0
  • Down0
Richard Turnbull
Join Date: 3 Feb 12
Location: Oxfordshire
Posts: 5
Posted: Thu, 2015-06-04 04:47

Just to add some more to this:

In this particular code (at the moment) when drawing I bind a VAO then before calling 'glDrawElements' I bind a large element array, allowing me to use different segments of the same element array for multiple draw calls. I appreciate there are better ways of doing this but it's legacy code that works fine on other platforms.

If I change the above so that I use different element arrays for each draw the whole issue goes away. My hunch is that 'glDeleteVertexArraysOES' is doing something destructive to the large element array it's been attached to at some point causing future calls to 'glBufferSubData' and 'glDrawElements' which use it to crash.

Is anyone on the driver team able to confirm whether 'glDeleteVertexArraysOES' could in any way be affecting element arrays?

Cheers,
Richard

 

  • Up0
  • Down0
peteb
Profile picture
Join Date: 22 Mar 13
Location: San Diego
Posts: 5
Posted: Tue, 2015-06-23 10:04

Hi Richard,

I spoke with our driver team and this is not something they encountered.  Those two errors seem to suggest that a bad ID/name is bound when calling glDrawElements.  Have you verified that the ID/name hasn't been deleted elsewhere?

Also, just to verify I have correct understanding of the sequence, you are using multiple vertex arrays and a single element buffer, and after the draw you are deleting the vertex arrays, and this invalidates the element buffer?  Can you enable KHR_debug? (https://www.opengl.org/registry/specs/KHR/debug.txt) This will help track down exactly what's going on.

Cheers,

Pete

  • Up0
  • Down0
muzzinb
Join Date: 10 Jan 13
Posts: 2
Posted: Fri, 2015-07-17 12:01

I'm having this issue also, it appears to be all Adreno 320 chips with Android version 5.0 or higher. The exact same code on the same device running Android 4.4 works just fine. The device I am testing on does not have the KHR_debug extension, so there's no way I can get additional information about the actual crash. The usage is the same - multiple VAOs with a single VBO. When deleting any VAO that has the VBO bound causes any draw call using another VAO with the VBO to give an error.

Thanks,

Bart

  • Up0
  • Down0
Üstün Ergenoglu
Join Date: 29 Dec 13
Posts: 6
Posted: Wed, 2015-07-29 00:30

I am facing a similar issue with VAOs on Nexus 5 and Nexus 7 devices. I have a set of VBOs that I recycle for the procedurally generated geometry I have. The first set of VBOs and VAOs I create are fine, but as I delete some VAOs and then create new ones using the VBOs I have I start getting artifacts(like geometry not getting drawn). The same code path is working fine on varioud Mali and PowerVR GPUs and also some other devices with the same Adreno GPU. As a comparison here are few devices I tried with:

Nexus 5 with Adreno 330 OpenGL ES 3.0 [email protected] AU@ (GIT@Id3510ff6dc) -> artifacts visible

Nexus 7 with Adreno 320  OpenGL ES 3.0 [email protected] AU@ (GIT@Id3510ff6dc) -> artifact visible

Samsung Galaxy S5 with Adreno 330 using Android Kitkat  OpenGL ES 3.0 [email protected] AU@ (CL@) -> no artifact

I have also tried a couple of newer devices with Adreno 420 GPUs and the issue is not visible there either. From what I can see, there's got to be something broken in the version 104.0 of the adreno drivers.

Cheers,

Üstün

  • Up0
  • Down0
or Register

Opinions expressed in the content posted here are the personal opinions of the original authors, and do not necessarily reflect those of Qualcomm Incorporated or its subsidiaries (“Qualcomm”). The content is provided for informational purposes only and is not meant to be an endorsement or representation by Qualcomm or any other party. This site may also provide links or references to non-Qualcomm sites and resources. Qualcomm makes no representations, warranties, or other commitments whatsoever about any non-Qualcomm sites or third-party resources that may be referenced, accessible from, or linked to this site.