[Mesa-dev] [PATCH] mesa: tidy up renderbuffer RefCount initialisation

Timothy Arceri tarceri at itsqueeze.com
Wed Apr 5 11:06:57 UTC 2017


42aaa548 changed the renderbuffer initialisation of RefCount from
1 to 0.

This is inconsitent with how we use RefCount elsewhere. Also every
driver implementation of NewRenderbuffer() calls
_mesa_init_renderbuffer() so its safe to set it there.
---
 src/mesa/drivers/common/meta.c | 2 --
 src/mesa/main/fbobject.c       | 1 -
 src/mesa/main/renderbuffer.c   | 2 +-
 3 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
index efbc934..f4c91ac 100644
--- a/src/mesa/drivers/common/meta.c
+++ b/src/mesa/drivers/common/meta.c
@@ -3037,22 +3037,20 @@ decompress_texture_image(struct gl_context *ctx,
                                   ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler);
 
    /* Create/bind FBO/renderbuffer */
    if (decompress_fbo->fb == NULL) {
       decompress_fbo->rb = ctx->Driver.NewRenderbuffer(ctx, 0xDEADBEEF);
       if (decompress_fbo->rb == NULL) {
          _mesa_meta_end(ctx);
          return false;
       }
 
-      decompress_fbo->rb->RefCount = 1;
-
       decompress_fbo->fb = ctx->Driver.NewFramebuffer(ctx, 0xDEADBEEF);
       if (decompress_fbo->fb == NULL) {
          _mesa_meta_end(ctx);
          return false;
       }
 
       _mesa_bind_framebuffers(ctx, decompress_fbo->fb, decompress_fbo->fb);
       _mesa_framebuffer_renderbuffer(ctx, ctx->DrawBuffer, GL_COLOR_ATTACHMENT0,
                                      decompress_fbo->rb);
    }
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index 4d9a7b8..e52c1e3 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -1309,21 +1309,20 @@ allocate_renderbuffer_locked(struct gl_context *ctx, GLuint renderbuffer,
    struct gl_renderbuffer *newRb;
 
    /* create new renderbuffer object */
    newRb = ctx->Driver.NewRenderbuffer(ctx, renderbuffer);
    if (!newRb) {
       _mesa_error(ctx, GL_OUT_OF_MEMORY, "%s", func);
       return NULL;
    }
    assert(newRb->AllocStorage);
    _mesa_HashInsertLocked(ctx->Shared->RenderBuffers, renderbuffer, newRb);
-   newRb->RefCount = 1; /* referenced by hash table */
 
    return newRb;
 }
 
 
 static void
 bind_renderbuffer(GLenum target, GLuint renderbuffer, bool allow_user_names)
 {
    struct gl_renderbuffer *newRb;
    GET_CURRENT_CONTEXT(ctx);
diff --git a/src/mesa/main/renderbuffer.c b/src/mesa/main/renderbuffer.c
index 53e0b74..1d24e9c 100644
--- a/src/mesa/main/renderbuffer.c
+++ b/src/mesa/main/renderbuffer.c
@@ -36,21 +36,21 @@
 /**
  * Initialize the fields of a gl_renderbuffer to default values.
  */
 void
 _mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name)
 {
    GET_CURRENT_CONTEXT(ctx);
 
    rb->ClassID = 0;
    rb->Name = name;
-   rb->RefCount = 0;
+   rb->RefCount = 1;
    rb->Delete = _mesa_delete_renderbuffer;
 
    /* The rest of these should be set later by the caller of this function or
     * the AllocStorage method:
     */
    rb->AllocStorage = NULL;
 
    rb->Width = 0;
    rb->Height = 0;
    rb->Depth = 0;
-- 
2.9.3



More information about the mesa-dev mailing list