From 6af3a12e700065ca4b8b3a5d12b97a75142dd185 Mon Sep 17 00:00:00 2001 From: SoroushIMG Date: Sun, 12 Feb 2023 00:36:29 +0000 Subject: [PATCH] zink: fix compute shader leaks Compute program owns the nir and zink shaders now and must free them too when destroyed. Fixes: 4cb4bb555e7 ("zink: create compute programs from compute shaders directly") Part-of: --- src/gallium/drivers/zink/zink_program.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index 5b6535f29e6..f0d43be16aa 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -1457,8 +1457,13 @@ zink_destroy_compute_program(struct zink_screen *screen, { deinit_program(screen, &comp->base); - if (comp->shader) - _mesa_set_remove_key(comp->shader->programs, comp); + assert(comp->shader); + assert(!comp->shader->spirv); + + _mesa_set_destroy(comp->shader->programs, NULL); + ralloc_free(comp->shader->nir); + ralloc_free(comp->shader); + destroy_shader_cache(screen, &comp->shader_cache[0]); destroy_shader_cache(screen, &comp->shader_cache[1]);