diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index 669f4474044..5f1ed105476 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -1121,6 +1121,8 @@ zink_create_gfx_program(struct zink_context *ctx, if (screen->optimal_keys) prog->libs = find_or_create_lib_cache(screen, prog); + if (prog->libs) + p_atomic_inc(&prog->libs->refcount); struct mesa_sha1 sctx; _mesa_sha1_init(&sctx); @@ -1547,7 +1549,7 @@ zink_destroy_gfx_program(struct zink_screen *screen, blob_finish(&prog->blobs[i]); } } - if (prog->is_separable && prog->libs) + if (prog->libs) zink_gfx_lib_cache_unref(screen, prog->libs); ralloc_free(prog);