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:
committed by
Marge Bot
parent
ac1d003d37
commit
27fe924cf0
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user