From a0caa3399f21fb8673ff2bb54cef034e42c0a67a Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Wed, 8 Jul 2026 12:43:40 +0100 Subject: [PATCH] Improve Vulkan handling of zero count Submits --- .../driver/vulkan/wrappers/vk_queue_funcs.cpp | 60 ++++++++++++------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp index 93ece219e..11218e47f 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp @@ -1494,22 +1494,30 @@ bool WrappedVulkan::Serialise_vkQueueSubmit(SerialiserType &ser, VkQueue queue, } if(submitCount == 0) { - AddEvent(); + if(IsLoading(m_State)) + { + AddEvent(); - // we're adding multiple events, need to increment ourselves - m_RootEventID++; + // we're adding multiple events, need to increment ourselves + m_RootEventID++; - ObjDisp(queue)->QueueSubmit(Unwrap(queue), 0, NULL, VK_NULL_HANDLE); + ObjDisp(queue)->QueueSubmit(Unwrap(queue), 0, NULL, VK_NULL_HANDLE); - ActionDescription action; - action.customName = "=> vkQueueSubmit(): No Submit"; - action.flags |= ActionFlags::CommandBufferBoundary | ActionFlags::PassBoundary; - AddEvent(); + ActionDescription action; + action.customName = "=> vkQueueSubmit(): No Submit"; + action.flags |= ActionFlags::CommandBufferBoundary | ActionFlags::PassBoundary; + AddEvent(); - m_RootEvents.back().chunkIndex = APIEvent::NoChunk; - m_Events.back().chunkIndex = APIEvent::NoChunk; + m_RootEvents.back().chunkIndex = APIEvent::NoChunk; + m_Events.back().chunkIndex = APIEvent::NoChunk; - AddAction(action); + AddAction(action); + } + else + { + // account for the queue submit event + m_RootEventID++; + } } else { @@ -1687,22 +1695,30 @@ bool WrappedVulkan::Serialise_vkQueueSubmit2(SerialiserType &ser, VkQueue queue, } if(submitCount == 0) { - AddEvent(); + if(IsLoading(m_State)) + { + AddEvent(); - // we're adding multiple events, need to increment ourselves - m_RootEventID++; + // we're adding multiple events, need to increment ourselves + m_RootEventID++; - ObjDisp(queue)->QueueSubmit2(Unwrap(queue), 0, NULL, VK_NULL_HANDLE); + ObjDisp(queue)->QueueSubmit2(Unwrap(queue), 0, NULL, VK_NULL_HANDLE); - ActionDescription action; - action.customName = "=> vkQueueSubmit2(): No Submit"; - action.flags |= ActionFlags::CommandBufferBoundary | ActionFlags::PassBoundary; - AddEvent(); + ActionDescription action; + action.customName = "=> vkQueueSubmit2(): No Submit"; + action.flags |= ActionFlags::CommandBufferBoundary | ActionFlags::PassBoundary; + AddEvent(); - m_RootEvents.back().chunkIndex = APIEvent::NoChunk; - m_Events.back().chunkIndex = APIEvent::NoChunk; + m_RootEvents.back().chunkIndex = APIEvent::NoChunk; + m_Events.back().chunkIndex = APIEvent::NoChunk; - AddAction(action); + AddAction(action); + } + else + { + // account for the queue submit event + m_RootEventID++; + } } else {