zink: use program's context for cache deletion
this forces deletion of the program from its owner context under lock Reviewed-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18689>
This commit is contained in:
committed by
Marge Bot
parent
275e4a9c89
commit
ac1b343477
@@ -3249,13 +3249,13 @@ zink_shader_free(struct zink_context *ctx, struct zink_shader *shader)
|
||||
if (prog->shaders[MESA_SHADER_TESS_CTRL] && prog->shaders[MESA_SHADER_TESS_CTRL]->is_generated)
|
||||
stages_present &= ~BITFIELD_BIT(MESA_SHADER_TESS_CTRL);
|
||||
unsigned idx = zink_program_cache_stages(stages_present);
|
||||
struct hash_table *ht = &ctx->program_cache[idx];
|
||||
simple_mtx_lock(&ctx->program_lock[idx]);
|
||||
struct hash_table *ht = &prog->ctx->program_cache[idx];
|
||||
simple_mtx_lock(&prog->ctx->program_lock[idx]);
|
||||
struct hash_entry *he = _mesa_hash_table_search(ht, prog->shaders);
|
||||
assert(he);
|
||||
_mesa_hash_table_remove(ht, he);
|
||||
prog->base.removed = true;
|
||||
simple_mtx_unlock(&ctx->program_lock[idx]);
|
||||
simple_mtx_unlock(&prog->ctx->program_lock[idx]);
|
||||
}
|
||||
if (stage != MESA_SHADER_TESS_CTRL || !shader->is_generated) {
|
||||
prog->shaders[stage] = NULL;
|
||||
|
||||
Reference in New Issue
Block a user