From 1a0c70bac80f690a088e4b76632d588a82c60fd2 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Wed, 20 May 2026 16:02:18 +0100 Subject: [PATCH] Clamp Vk Indirect partial replay draw count i.e. partial replay of an indirect with zero draw count --- renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp index 056635cb6..547bc9975 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp @@ -671,7 +671,7 @@ bool WrappedVulkan::Serialise_vkCmdDrawIndirect(SerialiserType &ser, VkCommandBu m_IndirectDraw = true; unwrappedBuffer = m_IndirectBuffer.UnwrappedBuffer(); offset = 0; - count = drawidx + 1; + count = RDCMIN(count, drawidx + 1); stride = sizeof(VkDrawIndirectCommand); } @@ -1038,7 +1038,7 @@ bool WrappedVulkan::Serialise_vkCmdDrawIndexedIndirect(SerialiserType &ser, m_IndirectDraw = true; unwrappedBuffer = m_IndirectBuffer.UnwrappedBuffer(); offset = 0; - count = drawidx + 1; + count = RDCMIN(count, drawidx + 1); stride = sizeof(VkDrawIndexedIndirectCommand); } @@ -2996,7 +2996,7 @@ bool WrappedVulkan::Serialise_vkCmdDrawIndirectCount(SerialiserType &ser, m_IndirectDraw = true; unwrappedBuffer = m_IndirectBuffer.UnwrappedBuffer(); offset = 0; - count = drawidx + 1; + count = RDCMIN(count, drawidx + 1); stride = sizeof(VkDrawIndirectCommand); } @@ -3308,7 +3308,7 @@ bool WrappedVulkan::Serialise_vkCmdDrawIndexedIndirectCount( m_IndirectDraw = true; unwrappedBuffer = m_IndirectBuffer.UnwrappedBuffer(); offset = 0; - count = drawidx + 1; + count = RDCMIN(count, drawidx + 1); stride = sizeof(VkDrawIndexedIndirectCommand); } @@ -4634,7 +4634,7 @@ bool WrappedVulkan::Serialise_vkCmdDrawMeshTasksIndirectEXT(SerialiserType &ser, m_IndirectDraw = true; unwrappedBuffer = m_IndirectBuffer.UnwrappedBuffer(); offset = 0; - drawCount = drawidx + 1; + drawCount = RDCMIN(drawCount, drawidx + 1); stride = sizeof(VkDrawMeshTasksIndirectCommandEXT); } @@ -4985,7 +4985,7 @@ bool WrappedVulkan::Serialise_vkCmdDrawMeshTasksIndirectCountEXT( m_IndirectDraw = true; unwrappedBuffer = m_IndirectBuffer.UnwrappedBuffer(); offset = 0; - count = drawidx + 1; + count = RDCMIN(count, drawidx + 1); stride = sizeof(VkDrawMeshTasksIndirectCommandEXT); }