Revert "mesa: use simple_mtx_t for TexMutex"
This reverts the following commit from main:
commit f6abb3445b
Author: Marek Olšák <maraeo@gmail.com>
Date: Fri Oct 1 15:46:48 2021 -0400
mesa: use simple_mtx_t for TexMutex
change mtx_recursive -> mtx_plain, there's no recursive locking
Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13152>
Contrary to the claim in the commit message, there is recursive locking.
The meta stuff used by i965 does GL operations while the texture is
locked. If we don't allow recursive locks, it will deadlock. No, it's
not great, but it's the current state of affairs. Once we delete i965
in favor of crocus and any other users of meta, we can restore the above
patch. Until then, we need mtx_recursive.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13254>
This commit is contained in:
parent
305b170229
commit
781c0eafcf
|
@ -55,7 +55,7 @@ glthread_unmarshal_batch(void *job, void *gdata, int thread_index)
|
|||
|
||||
_mesa_HashLockMutex(ctx->Shared->BufferObjects);
|
||||
ctx->BufferObjectsLocked = true;
|
||||
simple_mtx_lock(&ctx->Shared->TexMutex);
|
||||
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;
|
||||
simple_mtx_unlock(&ctx->Shared->TexMutex);
|
||||
mtx_unlock(&ctx->Shared->TexMutex);
|
||||
ctx->BufferObjectsLocked = false;
|
||||
_mesa_HashUnlockMutex(ctx->Shared->BufferObjects);
|
||||
|
||||
|
|
|
@ -3387,7 +3387,7 @@ struct gl_shared_state
|
|||
* \todo Improve the granularity of locking.
|
||||
*/
|
||||
/*@{*/
|
||||
simple_mtx_t TexMutex; /**< texobj thread safety */
|
||||
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 */
|
||||
simple_mtx_init(&shared->TexMutex, mtx_plain);
|
||||
mtx_init(&shared->TexMutex, mtx_recursive);
|
||||
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);
|
||||
simple_mtx_destroy(&shared->TexMutex);
|
||||
mtx_destroy(&shared->TexMutex);
|
||||
|
||||
free(shared);
|
||||
}
|
||||
|
|
|
@ -2161,7 +2161,7 @@ void
|
|||
_mesa_lock_context_textures( struct gl_context *ctx )
|
||||
{
|
||||
if (!ctx->TexturesLocked)
|
||||
simple_mtx_lock(&ctx->Shared->TexMutex);
|
||||
mtx_lock(&ctx->Shared->TexMutex);
|
||||
|
||||
if (ctx->Shared->TextureStateStamp != ctx->TextureStateTimestamp) {
|
||||
ctx->NewState |= _NEW_TEXTURE_OBJECT;
|
||||
|
@ -2176,7 +2176,7 @@ _mesa_unlock_context_textures( struct gl_context *ctx )
|
|||
{
|
||||
assert(ctx->Shared->TextureStateStamp == ctx->TextureStateTimestamp);
|
||||
if (!ctx->TexturesLocked)
|
||||
simple_mtx_unlock(&ctx->Shared->TexMutex);
|
||||
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)
|
||||
simple_mtx_lock(&ctx->Shared->TexMutex);
|
||||
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)
|
||||
simple_mtx_unlock(&ctx->Shared->TexMutex);
|
||||
mtx_unlock(&ctx->Shared->TexMutex);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue