Module: Mesa
Branch: master
Commit: aa748ef7e519243944bbf439562a9fc78cebd080
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=aa748ef7e519243944bbf439562a9fc78cebd080

Author: Marek Olšák <[email protected]>
Date:   Tue Mar  2 00:56:29 2021 -0500

mesa: add assertions for buffer reference counts

Reviewed-by: Zoltán Böszörményi <[email protected]>
Reviewed-by: Pierre-Eric Pelloux-Prayer <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9360>

---

 src/mesa/main/bufferobj.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
index b2a36a34756..6a8c80bf535 100644
--- a/src/mesa/main/bufferobj.c
+++ b/src/mesa/main/bufferobj.c
@@ -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) {

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to