From 01f2aa846e5fddc1e1f14d04e1579168af2ead3c Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 11 Oct 2023 12:10:56 -0400 Subject: [PATCH] zink: add some checks to determine whether queue is init on screen destroy cc: mesa-stable Part-of: --- src/gallium/drivers/zink/zink_screen.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 51ac14b..25c965d 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -1485,10 +1485,12 @@ zink_destroy_screen(struct pipe_screen *pscreen) VKSCR(DestroyPipelineLayout)(screen->dev, screen->gfx_push_constant_layout, NULL); u_transfer_helper_destroy(pscreen->transfer_helper); - util_queue_finish(&screen->cache_get_thread); - util_queue_destroy(&screen->cache_get_thread); + if (util_queue_is_initialized(&screen->cache_get_thread)) { + util_queue_finish(&screen->cache_get_thread); + util_queue_destroy(&screen->cache_get_thread); + } #ifdef ENABLE_SHADER_CACHE - if (screen->disk_cache) { + if (screen->disk_cache && util_queue_is_initialized(&screen->cache_put_thread)) { util_queue_finish(&screen->cache_put_thread); disk_cache_wait_for_idle(screen->disk_cache); util_queue_destroy(&screen->cache_put_thread); @@ -1512,7 +1514,7 @@ zink_destroy_screen(struct pipe_screen *pscreen) if (screen->fence) VKSCR(DestroyFence)(screen->dev, screen->fence, NULL); - if (screen->threaded_submit) + if (util_queue_is_initialized(&screen->flush_queue)) util_queue_destroy(&screen->flush_queue); simple_mtx_destroy(&screen->semaphores_lock); -- 2.7.4