From 4882f49e6baa6e4cbe6277a2a5702b17d52176d0 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 8 May 2024 13:24:05 -0400 Subject: [PATCH] zink: don't submit main cmdbuf if has_work is not set this should avoid submitting empty cmdbufs Part-of: --- src/gallium/drivers/zink/zink_batch.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c index 3135d65babd..020cb38e029 100644 --- a/src/gallium/drivers/zink/zink_batch.c +++ b/src/gallium/drivers/zink/zink_batch.c @@ -677,7 +677,8 @@ submit_queue(void *data, void *gdata, int thread_index) cmdbufs[c++] = bs->unsynchronized_cmdbuf; if (bs->has_reordered_work) cmdbufs[c++] = bs->reordered_cmdbuf; - cmdbufs[c++] = bs->cmdbuf; + if (bs->has_work) + cmdbufs[c++] = bs->cmdbuf; si[ZINK_SUBMIT_CMDBUF].pCommandBuffers = cmdbufs; si[ZINK_SUBMIT_CMDBUF].commandBufferCount = c; /* assorted signal submit from wsi/externals */ @@ -704,14 +705,16 @@ submit_queue(void *data, void *gdata, int thread_index) VkResult result; - VRAM_ALLOC_LOOP(result, - VKSCR(EndCommandBuffer)(bs->cmdbuf), - if (result != VK_SUCCESS) { - mesa_loge("ZINK: vkEndCommandBuffer failed (%s)", vk_Result_to_str(result)); - bs->is_device_lost = true; - goto end; - } - ); + if (bs->has_work) { + VRAM_ALLOC_LOOP(result, + VKSCR(EndCommandBuffer)(bs->cmdbuf), + if (result != VK_SUCCESS) { + mesa_loge("ZINK: vkEndCommandBuffer failed (%s)", vk_Result_to_str(result)); + bs->is_device_lost = true; + goto end; + } + ); + } if (bs->has_reordered_work) { if (bs->unordered_write_access) { VkMemoryBarrier mb;