From c41ecec55f29426705ce7ee2475f85db3ab0485d 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: (cherry picked from commit 4489933842168df2e8705b4461ba0636ad670faf) --- .pick_status.json | 2 +- src/vulkan/runtime/vk_queue.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 7299b794a2d..0f0490d3e4d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -652,7 +652,7 @@ "description": "vulkan/queue: Destroy wait temps if they are skipped", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "because_sha": "8a11d2a31bf931deca05c79871aeaf1441fb777e" }, { diff --git a/src/vulkan/runtime/vk_queue.c b/src/vulkan/runtime/vk_queue.c index a1ff0ba0283..9aef3e9505d 100644 --- a/src/vulkan/runtime/vk_queue.c +++ b/src/vulkan/runtime/vk_queue.c @@ -293,8 +293,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.