--- src/mesa/main/mtypes.h | 1 - src/mesa/main/samplerobj.c | 16 ++++------------ 2 files changed, 4 insertions(+), 13 deletions(-)
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index d37a60d61c..5a1be17a92 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -968,7 +968,6 @@ typedef enum */ struct gl_sampler_object { - mtx_t Mutex; GLuint Name; GLint RefCount; GLchar *Label; /**< GL_KHR_debug */ diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c index 183f1d2a86..fa826b5bef 100644 --- a/src/mesa/main/samplerobj.c +++ b/src/mesa/main/samplerobj.c @@ -38,6 +38,7 @@ #include "main/macros.h" #include "main/mtypes.h" #include "main/samplerobj.h" +#include "util/u_atomic.h" struct gl_sampler_object * @@ -61,7 +62,6 @@ static void delete_sampler_object(struct gl_context *ctx, struct gl_sampler_object *sampObj) { - mtx_destroy(&sampObj->Mutex); free(sampObj->Label); free(sampObj); } @@ -78,16 +78,11 @@ _mesa_reference_sampler_object_(struct gl_context *ctx, if (*ptr) { /* Unreference the old sampler */ - GLboolean deleteFlag = GL_FALSE; struct gl_sampler_object *oldSamp = *ptr; - mtx_lock(&oldSamp->Mutex); assert(oldSamp->RefCount > 0); - oldSamp->RefCount--; - deleteFlag = (oldSamp->RefCount == 0); - mtx_unlock(&oldSamp->Mutex); - if (deleteFlag) + if (p_atomic_dec_zero(&oldSamp->RefCount)) delete_sampler_object(ctx, oldSamp); *ptr = NULL; @@ -96,18 +91,16 @@ _mesa_reference_sampler_object_(struct gl_context *ctx, if (samp) { /* reference new sampler */ - mtx_lock(&samp->Mutex); - if (samp->RefCount == 0) { + if (p_atomic_read(&samp->RefCount) == 0) { /* this sampler's being deleted (look just above) */ /* Not sure this can every really happen. Warn if it does. */ _mesa_problem(NULL, "referencing deleted sampler object"); *ptr = NULL; } else { - samp->RefCount++; + p_atomic_inc(&samp->RefCount); *ptr = samp; } - mtx_unlock(&samp->Mutex); } } @@ -118,7 +111,6 @@ _mesa_reference_sampler_object_(struct gl_context *ctx, static void _mesa_init_sampler_object(struct gl_sampler_object *sampObj, GLuint name) { - mtx_init(&sampObj->Mutex, mtx_plain); sampObj->Name = name; sampObj->RefCount = 1; sampObj->WrapS = GL_REPEAT; -- 2.12.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev