zink: always block the precompile threads when pruning shaders

this will avoid desync with separate shader program compiles

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28955>
This commit is contained in:
Mike Blumenkrantz
2024-05-03 10:42:06 -04:00
committed by Marge Bot
parent ac1d003d37
commit 27fe924cf0
+1 -1
View File
@@ -6433,6 +6433,7 @@ gfx_shader_prune(struct zink_screen *screen, struct zink_shader *shader)
return false;
gl_shader_stage stage = shader->info.stage;
assert(stage < ZINK_GFX_SHADER_COUNT);
util_queue_fence_wait(&prog->base.cache_fence);
unsigned stages_present = prog->stages_present;
if (prog->shaders[MESA_SHADER_TESS_CTRL] &&
prog->shaders[MESA_SHADER_TESS_CTRL]->non_fs.is_generated)
@@ -6447,7 +6448,6 @@ gfx_shader_prune(struct zink_screen *screen, struct zink_shader *shader)
_mesa_hash_table_remove(ht, he);
prog->base.removed = true;
simple_mtx_unlock(&prog->base.ctx->program_lock[idx]);
util_queue_fence_wait(&prog->base.cache_fence);
for (unsigned r = 0; r < ARRAY_SIZE(prog->pipelines); r++) {
for (int i = 0; i < ARRAY_SIZE(prog->pipelines[0]); ++i) {