mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-29 23:10:11 +01:00
mesa: Add locking to sampler objects.
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
d4b0e0b717
commit
3c57a102eb
2 changed files with 7 additions and 4 deletions
|
|
@ -944,6 +944,7 @@ typedef enum
|
|||
*/
|
||||
struct gl_sampler_object
|
||||
{
|
||||
mtx_t Mutex;
|
||||
GLuint Name;
|
||||
GLint RefCount;
|
||||
GLchar *Label; /**< GL_KHR_debug */
|
||||
|
|
|
|||
|
|
@ -88,11 +88,11 @@ _mesa_reference_sampler_object_(struct gl_context *ctx,
|
|||
GLboolean deleteFlag = GL_FALSE;
|
||||
struct gl_sampler_object *oldSamp = *ptr;
|
||||
|
||||
/*mtx_lock(&oldSamp->Mutex);*/
|
||||
mtx_lock(&oldSamp->Mutex);
|
||||
assert(oldSamp->RefCount > 0);
|
||||
oldSamp->RefCount--;
|
||||
deleteFlag = (oldSamp->RefCount == 0);
|
||||
/*mtx_unlock(&oldSamp->Mutex);*/
|
||||
mtx_unlock(&oldSamp->Mutex);
|
||||
|
||||
if (deleteFlag) {
|
||||
assert(ctx->Driver.DeleteSamplerObject);
|
||||
|
|
@ -105,7 +105,7 @@ _mesa_reference_sampler_object_(struct gl_context *ctx,
|
|||
|
||||
if (samp) {
|
||||
/* reference new sampler */
|
||||
/*mtx_lock(&samp->Mutex);*/
|
||||
mtx_lock(&samp->Mutex);
|
||||
if (samp->RefCount == 0) {
|
||||
/* this sampler's being deleted (look just above) */
|
||||
/* Not sure this can every really happen. Warn if it does. */
|
||||
|
|
@ -116,7 +116,7 @@ _mesa_reference_sampler_object_(struct gl_context *ctx,
|
|||
samp->RefCount++;
|
||||
*ptr = samp;
|
||||
}
|
||||
/*mtx_unlock(&samp->Mutex);*/
|
||||
mtx_unlock(&samp->Mutex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -127,6 +127,7 @@ _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;
|
||||
|
|
@ -169,6 +170,7 @@ static void
|
|||
_mesa_delete_sampler_object(struct gl_context *ctx,
|
||||
struct gl_sampler_object *sampObj)
|
||||
{
|
||||
mtx_destroy(&sampObj->Mutex);
|
||||
free(sampObj->Label);
|
||||
free(sampObj);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue