From efbc17335bed4f3984f5a9c1a1594233590eb152 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 15 Mar 2022 10:53:26 +0000 Subject: [PATCH] Make sure to remove secondary subpass flag on renderpasses * When replaying draws alone in a primary command buffer we need to revert back to normal draws in subpasses. --- renderdoc/driver/vulkan/vk_overlay.cpp | 3 +++ renderdoc/driver/vulkan/vk_postvs.cpp | 3 +++ renderdoc/driver/vulkan/vk_shader_feedback.cpp | 3 +++ renderdoc/driver/vulkan/vk_shaderdebug.cpp | 3 +++ 4 files changed, 12 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_overlay.cpp b/renderdoc/driver/vulkan/vk_overlay.cpp index db939ec7a..99a0bf0b1 100644 --- a/renderdoc/driver/vulkan/vk_overlay.cpp +++ b/renderdoc/driver/vulkan/vk_overlay.cpp @@ -1045,6 +1045,9 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, FloatVector clearCol, D state.subpass = 0; state.SetFramebuffer(m_pDriver, GetResID(m_Overlay.NoDepthFB)); + state.subpassContents = VK_SUBPASS_CONTENTS_INLINE; + state.dynamicRendering.flags &= VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT; + state.graphics.pipeline = GetResID(pipe); // set dynamic scissors in case pipeline was using them diff --git a/renderdoc/driver/vulkan/vk_postvs.cpp b/renderdoc/driver/vulkan/vk_postvs.cpp index 36e831b57..255c17af4 100644 --- a/renderdoc/driver/vulkan/vk_postvs.cpp +++ b/renderdoc/driver/vulkan/vk_postvs.cpp @@ -3026,6 +3026,9 @@ void VulkanReplay::FetchTessGSOut(uint32_t eventId, VulkanRenderState &state) state.xfbbuffers.clear(); state.xfbcounters.clear(); + state.subpassContents = VK_SUBPASS_CONTENTS_INLINE; + state.dynamicRendering.flags &= VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT; + if(m_PostVS.XFBQueryPoolSize < action->numInstances) { if(m_PostVS.XFBQueryPoolSize != VK_NULL_HANDLE) diff --git a/renderdoc/driver/vulkan/vk_shader_feedback.cpp b/renderdoc/driver/vulkan/vk_shader_feedback.cpp index 9e5e64821..315263c09 100644 --- a/renderdoc/driver/vulkan/vk_shader_feedback.cpp +++ b/renderdoc/driver/vulkan/vk_shader_feedback.cpp @@ -1717,6 +1717,9 @@ void VulkanReplay::FetchShaderFeedback(uint32_t eventId) } } + modifiedstate.subpassContents = VK_SUBPASS_CONTENTS_INLINE; + modifiedstate.dynamicRendering.flags &= VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT; + { VkCommandBuffer cmd = m_pDriver->GetNextCmd(); diff --git a/renderdoc/driver/vulkan/vk_shaderdebug.cpp b/renderdoc/driver/vulkan/vk_shaderdebug.cpp index 4a33a6c1f..c8cec4e65 100644 --- a/renderdoc/driver/vulkan/vk_shaderdebug.cpp +++ b/renderdoc/driver/vulkan/vk_shaderdebug.cpp @@ -4467,6 +4467,9 @@ ShaderDebugTrace *VulkanReplay::DebugPixel(uint32_t eventId, uint32_t x, uint32_ } } + modifiedstate.subpassContents = VK_SUBPASS_CONTENTS_INLINE; + modifiedstate.dynamicRendering.flags &= VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT; + { VkCommandBuffer cmd = m_pDriver->GetNextCmd();