Mesa (main): mesa: use simple_mtx_t for TexMutex (v2)

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Dec 6 20:44:21 UTC 2021


Module: Mesa
Branch: main
Commit: de5c863a52949e05c418717aa549edfd8b96d5b8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=de5c863a52949e05c418717aa549edfd8b96d5b8

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Fri Oct  1 15:46:48 2021 -0400

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 <michael.blumenkrantz at gmail.com> (v1)
Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14053>

---

 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);
 }
 
 



More information about the mesa-commit mailing list