From de5c863a52949e05c418717aa549edfd8b96d5b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 1 Oct 2021 15:46:48 -0400 Subject: [PATCH] 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 f6abb3445b7f ("mesa: use simple_mtx_t for TexMutex") and then reverted with 781c0eafcf79 ("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 (v1) Reviewed-by: Timothy Arceri Reviewed-by: Kristian H. Kristensen Reviewed-by: Jason Ekstrand Part-of: --- src/mesa/main/glthread.c | 4 ++-- src/mesa/main/mtypes.h | 2 +- src/mesa/main/shared.c | 4 ++-- src/mesa/main/texobj.c | 4 ++-- src/mesa/main/texobj.h | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/mesa/main/glthread.c b/src/mesa/main/glthread.c index 47353d5dd28..49c3502620e 100644 --- a/src/mesa/main/glthread.c +++ b/src/mesa/main/glthread.c @@ -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); diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index d96eeaa0684..f6e6001b565 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -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 */ /*@}*/ diff --git a/src/mesa/main/shared.c b/src/mesa/main/shared.c index 9c6d2432370..0f7256b053f 100644 --- a/src/mesa/main/shared.c +++ b/src/mesa/main/shared.c @@ -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); } diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index bf5d8298a53..88b9ee63086 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -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); } diff --git a/src/mesa/main/texobj.h b/src/mesa/main/texobj.h index 22e98d9684e..c933390af45 100644 --- a/src/mesa/main/texobj.h +++ b/src/mesa/main/texobj.h @@ -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); }