Reviewed-by: Marek Olšák <marek.ol...@amd.com>

Marek

On Tue, Aug 15, 2017 at 2:03 PM, Tapani Pälli <tapani.pa...@intel.com> wrote:
> Signed-off-by: Tapani Pälli <tapani.pa...@intel.com>
> ---
>  src/mesa/main/framebuffer.c | 19 +++++--------------
>  1 file changed, 5 insertions(+), 14 deletions(-)
>
> Use atomic ops in same manner as for shader objects, IMO makes
> code easier to read.
>
> diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c
> index 039762a074..69e28c8af7 100644
> --- a/src/mesa/main/framebuffer.c
> +++ b/src/mesa/main/framebuffer.c
> @@ -45,7 +45,7 @@
>  #include "texobj.h"
>  #include "glformats.h"
>  #include "state.h"
> -
> +#include "util/u_atomic.h"
>
>
>  /**
> @@ -243,25 +243,16 @@ _mesa_reference_framebuffer_(struct gl_framebuffer 
> **ptr,
>  {
>     if (*ptr) {
>        /* unreference old renderbuffer */
> -      GLboolean deleteFlag = GL_FALSE;
>        struct gl_framebuffer *oldFb = *ptr;
> -
> -      mtx_lock(&oldFb->Mutex);
> -      assert(oldFb->RefCount > 0);
> -      oldFb->RefCount--;
> -      deleteFlag = (oldFb->RefCount == 0);
> -      mtx_unlock(&oldFb->Mutex);
> -
> -      if (deleteFlag)
> -         oldFb->Delete(oldFb);
> +      assert(p_atomic_read(&oldFb->RefCount) > 0);
> +      if (p_atomic_dec_zero(&oldFb->RefCount))
> +          oldFb->Delete(oldFb);
>
>        *ptr = NULL;
>     }
>
>     if (fb) {
> -      mtx_lock(&fb->Mutex);
> -      fb->RefCount++;
> -      mtx_unlock(&fb->Mutex);
> +      p_atomic_inc(&fb->RefCount);
>        *ptr = fb;
>     }
>  }
> --
> 2.13.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to