On 04/05/2017 05:06 AM, Timothy Arceri wrote:
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;


Reviewed-by: Brian Paul <[email protected]>

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

Reply via email to