mesa: add assertions for buffer reference counts

Reviewed-by: Zoltán Böszörményi <zboszor@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9360>
This commit is contained in:
Marek Olšák 2021-03-02 00:56:29 -05:00 committed by Marge Bot
parent ae0ce3e3ba
commit aa748ef7e5
1 changed files with 7 additions and 0 deletions

View File

@ -514,6 +514,8 @@ _mesa_reference_buffer_object_(struct gl_context *ctx,
/* Unreference the old buffer */
struct gl_buffer_object *oldObj = *ptr;
assert(oldObj->RefCount >= 1);
/* Count references only if the context doesn't own the buffer or if
* ptr is a binding point shared by multiple contexts (such as a texture
* buffer object being a buffer bound within a texture object).
@ -1700,6 +1702,11 @@ delete_buffers(struct gl_context *ctx, GLsizei n, const GLuint *ids)
*/
bufObj->DeletePending = GL_TRUE;
/* The GLuint ID holds one reference and the context that created
* the buffer holds the other one.
*/
assert(p_atomic_read(&bufObj->RefCount) >= (bufObj->Ctx ? 2 : 1));
if (bufObj->Ctx == ctx) {
detach_ctx_from_buffer(ctx, bufObj);
} else if (bufObj->Ctx) {