mesa: use simple_mtx_t for TexMutex (v2)

change mtx_recursive -> mtx_plain, there's no recursive locking

Let's try this again!  This was originally landed as f6abb3445b
("mesa: use simple_mtx_t for TexMutex") and then reverted with
781c0eafcf ("Revert "mesa: use simple_mtx_t for TexMutex"") because it
broke i965.  Now that i965 is no longer in the tree, we can restore it.

Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> (v1)
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14053>
This commit is contained in:
Marek Olšák 2021-10-01 15:46:48 -04:00 committed by Marge Bot
parent b88202b0e4
commit de5c863a52
5 changed files with 9 additions and 9 deletions

View File

@ -55,7 +55,7 @@ glthread_unmarshal_batch(void *job, void *gdata, int thread_index)
_mesa_HashLockMutex(ctx->Shared->BufferObjects);
ctx->BufferObjectsLocked = true;
mtx_lock(&ctx->Shared->TexMutex);
simple_mtx_lock(&ctx->Shared->TexMutex);
ctx->TexturesLocked = true;
while (pos < used) {
@ -66,7 +66,7 @@ glthread_unmarshal_batch(void *job, void *gdata, int thread_index)
}
ctx->TexturesLocked = false;
mtx_unlock(&ctx->Shared->TexMutex);
simple_mtx_unlock(&ctx->Shared->TexMutex);
ctx->BufferObjectsLocked = false;
_mesa_HashUnlockMutex(ctx->Shared->BufferObjects);

View File

@ -3411,7 +3411,7 @@ struct gl_shared_state
* \todo Improve the granularity of locking.
*/
/*@{*/
mtx_t TexMutex; /**< texobj thread safety */
simple_mtx_t TexMutex; /**< texobj thread safety */
GLuint TextureStateStamp; /**< state notification for shared tex */
/*@}*/

View File

@ -128,7 +128,7 @@ _mesa_alloc_shared_state(struct gl_context *ctx)
assert(shared->DefaultTex[TEXTURE_1D_INDEX]->RefCount == 1);
/* Mutex and timestamp for texobj state validation */
mtx_init(&shared->TexMutex, mtx_recursive);
simple_mtx_init(&shared->TexMutex, mtx_plain);
shared->TextureStateStamp = 0;
shared->FrameBuffers = _mesa_NewHashTable();
@ -459,7 +459,7 @@ free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared)
}
simple_mtx_destroy(&shared->Mutex);
mtx_destroy(&shared->TexMutex);
simple_mtx_destroy(&shared->TexMutex);
free(shared);
}

View File

@ -2152,7 +2152,7 @@ void
_mesa_lock_context_textures( struct gl_context *ctx )
{
if (!ctx->TexturesLocked)
mtx_lock(&ctx->Shared->TexMutex);
simple_mtx_lock(&ctx->Shared->TexMutex);
if (ctx->Shared->TextureStateStamp != ctx->TextureStateTimestamp) {
ctx->NewState |= _NEW_TEXTURE_OBJECT;
@ -2167,7 +2167,7 @@ _mesa_unlock_context_textures( struct gl_context *ctx )
{
assert(ctx->Shared->TextureStateStamp == ctx->TextureStateTimestamp);
if (!ctx->TexturesLocked)
mtx_unlock(&ctx->Shared->TexMutex);
simple_mtx_unlock(&ctx->Shared->TexMutex);
}

View File

@ -103,7 +103,7 @@ static inline void
_mesa_lock_texture(struct gl_context *ctx, struct gl_texture_object *texObj)
{
if (!ctx->TexturesLocked)
mtx_lock(&ctx->Shared->TexMutex);
simple_mtx_lock(&ctx->Shared->TexMutex);
ctx->Shared->TextureStateStamp++;
(void) texObj;
}
@ -113,7 +113,7 @@ _mesa_unlock_texture(struct gl_context *ctx, struct gl_texture_object *texObj)
{
(void) texObj;
if (!ctx->TexturesLocked)
mtx_unlock(&ctx->Shared->TexMutex);
simple_mtx_unlock(&ctx->Shared->TexMutex);
}