From e665bc0a12d1d7ad322b121fbcfd2747af16d06c Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Wed, 3 Jun 2026 09:02:46 +0100 Subject: [PATCH] Add correct action flags to zero sized Vk indrect draw count Fixes overlay Clear Before Draw/Pass, Overdraw (Pass) Triangle Size (Pass) not rendering on zero sized indirect draw count --- renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp | 6 ++++-- renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp index e84c87b38..982972ade 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp @@ -3001,7 +3001,8 @@ bool WrappedVulkan::Serialise_vkCmdDrawIndirectCount(SerialiserType &ser, AddAction(action); VulkanActionTreeNode &actionNode = GetActionStack().back()->children.back(); - actionNode.action.flags = flags; + if(maxDrawCount > 0) + actionNode.action.flags = flags; actionNode.indirectPatch = indirectPatch; @@ -3358,7 +3359,8 @@ bool WrappedVulkan::Serialise_vkCmdDrawIndexedIndirectCount( AddAction(action); VulkanActionTreeNode &actionNode = GetActionStack().back()->children.back(); - actionNode.action.flags = flags; + if(maxDrawCount > 0) + actionNode.action.flags = flags; actionNode.indirectPatch = indirectPatch; diff --git a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp index c5491dd77..93ece219e 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp @@ -751,7 +751,8 @@ void WrappedVulkan::InsertActionsAndRefreshIDs(BakedCmdBufferInfo &cmdBufInfo) // everything afterwards is adjusted. Now see if we need to remove the subdraw or clone it if(indirectCount == 0) { - // Copy the resource usage from the subdraw to the indirect action (push marker) + // Copy the flags and resource usage from the subdraw to the indirect action (push marker) + n.action.flags |= cmdBufNodes[i + 1].action.flags; n.resourceUsage.swap(cmdBufNodes[i + 1].resourceUsage); for(rdcpair &use : n.resourceUsage) use.second.eventId += eidShift;