mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 04:20:08 +01:00
mesa: Unbind ARB_copy_buffer and transform feedback buffers on delete.
According to the GL 3.1 spec, section 2.9 ("Buffer Objects"):
"If a buffer object is deleted while it is bound, all bindings to that
object in the current context (i.e. in the thread that called
DeleteBuffers) are reset to zero."
The code already checked for a number of cases, but neglected these
newer binding points.
+21 oglconforms.
NOTE: This is a candidate for stable release branches.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
25edfbfccf
commit
cb8ed93dd0
1 changed files with 13 additions and 0 deletions
|
|
@ -821,6 +821,19 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids)
|
|||
_mesa_BindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, 0 );
|
||||
}
|
||||
|
||||
/* unbind ARB_copy_buffer binding points */
|
||||
if (ctx->CopyReadBuffer == bufObj) {
|
||||
_mesa_BindBufferARB( GL_COPY_READ_BUFFER, 0 );
|
||||
}
|
||||
if (ctx->CopyWriteBuffer == bufObj) {
|
||||
_mesa_BindBufferARB( GL_COPY_WRITE_BUFFER, 0 );
|
||||
}
|
||||
|
||||
/* unbind transform feedback binding point */
|
||||
if (ctx->TransformFeedback.CurrentBuffer == bufObj) {
|
||||
_mesa_BindBufferARB( GL_TRANSFORM_FEEDBACK_BUFFER, 0 );
|
||||
}
|
||||
|
||||
/* unbind any pixel pack/unpack pointers bound to this buffer */
|
||||
if (ctx->Pack.BufferObj == bufObj) {
|
||||
_mesa_BindBufferARB( GL_PIXEL_PACK_BUFFER_EXT, 0 );
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue