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 asf6abb3445b
("mesa: use simple_mtx_t for TexMutex") and then reverted with781c0eafcf
("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:
parent
b88202b0e4
commit
de5c863a52
|
@ -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);
|
||||
|
||||
|
|
|
@ -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 */
|
||||
/*@}*/
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue