From a10cad018b25181b609c90756cc170cdfe45c2b4 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 20 Sep 2022 14:20:37 -0400 Subject: [PATCH] zink: don't try to delete programs from the cache if stages have been modified this is guaranteed to fail anyway Reviewed-by: Adam Jackson Part-of: --- src/gallium/drivers/zink/zink_compiler.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index fd88fcf..b2170c7 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -3243,7 +3243,8 @@ zink_shader_free(struct zink_context *ctx, struct zink_shader *shader) struct zink_gfx_program *prog = (void*)entry->key; gl_shader_stage stage = shader->nir->info.stage; assert(stage < ZINK_GFX_SHADER_COUNT); - if (!prog->base.removed && (stage != MESA_SHADER_TESS_CTRL || !shader->is_generated)) { + if (!prog->base.removed && prog->stages_present == prog->stages_remaining && + (stage != MESA_SHADER_TESS_CTRL || !shader->is_generated)) { unsigned stages_present = prog->stages_present; if (prog->shaders[MESA_SHADER_TESS_CTRL] && prog->shaders[MESA_SHADER_TESS_CTRL]->is_generated) stages_present &= ~BITFIELD_BIT(MESA_SHADER_TESS_CTRL); -- 2.7.4