OpenGL ES not handling VBO+VAO deletions properly

Originator:ScrimpyCat
Number:rdar://17032880 Date Originated:May 27 2014
Status:Open Resolved:No
Product:iOS SDK Product Version:7.1.1
Classification:Other Bug Reproducible:Yes
 
Summary:
When creating a VBO and VAO, drawing with them, and then deleting them soon after in the same render loop (when the target is an offscreen buffer, CVPixelBuffer), it does not draw. It should (and did prior to 7.1.1) draw, as OpenGL ES should still keep those objects alive internally. But instead it seems like deleting those objects (glDeleteBuffers, glDeleteVertexArraysOES) is deleting it completely.

No GL errors are reported from glGetError, and flushing (or even finishing) the command pipeline before the deletion makes no difference. Only waiting until the next render loop to delete makes it work correctly. Although if you first delete the VAO and then the VBO that also works.

Steps to Reproduce:
1. Create a VBO and VAO
2. Initialize VBO with data to be drawn, and set appropriate state VAO should bind when enabled.
3. Bind VAO and draw
4. Delete VBO, and then VAO

Expected Results:
The content within the VBO to be drawn.

Actual Results:
Nothing is drawn.

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!