Module: Mesa Branch: main Commit: 01f2aa846e5fddc1e1f14d04e1579168af2ead3c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=01f2aa846e5fddc1e1f14d04e1579168af2ead3c
Author: Mike Blumenkrantz <[email protected]> Date: Wed Oct 11 12:10:56 2023 -0400 zink: add some checks to determine whether queue is init on screen destroy cc: mesa-stable Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25663> --- 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 51ac14bde52..25c965d7737 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);
