From 4489933842168df2e8705b4461ba0636ad670faf Mon Sep 17 00:00:00 2001 From: Benjamin Cheng Date: Sun, 3 Apr 2022 19:03:56 -0400 Subject: [PATCH] vulkan/queue: Destroy wait temps if they are skipped Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6223 Fixes: 8a11d2a31bf9 ("vulkan: Add a dummy sync type") Reviewed-by: Jason Ekstrand Tested-by: Jakob Bornecrantz Part-of: --- src/vulkan/runtime/vk_queue.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/vulkan/runtime/vk_queue.c b/src/vulkan/runtime/vk_queue.c index 349d83444c5..6216af9d856 100644 --- a/src/vulkan/runtime/vk_queue.c +++ b/src/vulkan/runtime/vk_queue.c @@ -303,8 +303,16 @@ vk_queue_submit_final(struct vk_queue *queue, continue; /* Waits on dummy vk_syncs are no-ops */ - if (vk_sync_type_is_dummy(submit->waits[i].sync->type)) + if (vk_sync_type_is_dummy(submit->waits[i].sync->type)) { + /* We are about to lose track of this wait, if it has a temporary + * we need to destroy it now, as vk_queue_submit_cleanup will not + * know about it */ + if (submit->_wait_temps[i] != NULL) { + vk_sync_destroy(queue->base.device, submit->_wait_temps[i]); + submit->waits[i].sync = NULL; + } continue; + } /* For emulated timelines, we have a binary vk_sync associated with * each time point and pass the binary vk_sync to the driver.