From 8cf39364f509226d0b5591f032e07d0792d4b519 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 29 Dec 2015 22:29:43 +0100 Subject: [PATCH] Set outputs/depthOut values in FetchDrawcalls --- renderdoc/driver/vulkan/vk_core.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index fa8259df3..a32f0656c 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -1868,6 +1868,30 @@ void WrappedVulkan::AddDrawcall(FetchDrawcall d, bool hasEvents) draw.depthOut = ResourceId(); + if(m_RenderState.framebuffer != ResourceId() && m_RenderState.renderPass != ResourceId()) + { + vector &atts = m_CreationInfo.m_Framebuffer[m_RenderState.framebuffer].attachments; + + RDCASSERT(m_RenderState.subpass < m_CreationInfo.m_RenderPass[m_RenderState.renderPass].subpasses.size()); + + vector &colAtt = m_CreationInfo.m_RenderPass[m_RenderState.renderPass].subpasses[m_RenderState.subpass].colorAttachments; + int32_t dsAtt = m_CreationInfo.m_RenderPass[m_RenderState.renderPass].subpasses[m_RenderState.subpass].depthstencilAttachment; + + RDCASSERT(colAtt.size() < 8); + + for(int i=0; i < 8 && i < colAtt.size(); i++) + { + RDCASSERT(colAtt[i] < atts.size()); + draw.outputs[i] = atts[ colAtt[i] ].view; + } + + if(dsAtt != -1) + { + RDCASSERT(dsAtt < atts.size()); + draw.depthOut = atts[dsAtt].view; + } + } + ResourceId pipe = m_RenderState.graphics.pipeline; if(pipe != ResourceId()) draw.topology = MakePrimitiveTopology(m_CreationInfo.m_Pipeline[pipe].topology, m_CreationInfo.m_Pipeline[pipe].patchControlPoints);