From 48cd7143d72916e59a02367ade88c8fcd12bdd9a Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 15 Jul 2016 13:24:33 +0200 Subject: [PATCH] Track descriptor sets per-cmd-buffer while reading * This lets the usage actually have the right descriptor sets to check against. * It was lost as a result of a bad fix after copy-pasting removed the previous read-time tracking. --- renderdoc/driver/vulkan/vk_core.cpp | 10 ++++++++-- renderdoc/driver/vulkan/vk_core.h | 7 +++++++ renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp | 7 ++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 8568790dc..c3c8faacf 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -2540,9 +2540,12 @@ void WrappedVulkan::AddUsage(VulkanDrawcallTreeNode &drawNode, vectorGetOriginalID(state.pipeline); + ResourceId origShad = GetResourceManager()->GetOriginalID(sh.module); + // 5 is the compute shader's index (VS, TCS, TES, GS, FS, CS) - const vector &descSets = - (shad == 5 ? m_RenderState.compute.descSets : m_RenderState.graphics.descSets); + const vector &descSets = + (shad == 5 ? state.computeDescSets : state.graphicsDescSets); RDCASSERT(sh.mapping); @@ -2591,6 +2594,9 @@ void WrappedVulkan::AddUsage(VulkanDrawcallTreeNode &drawNode, vectorGetOriginalID(descSets[bindset].descSet); + ResourceId layoutId = GetResourceManager()->GetOriginalID(descset.layout); + if(layout.bindings.empty()) { msg.description = diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 668734222..b84bea516 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -340,6 +340,13 @@ private: { ResourceId pipeline; + struct DescriptorAndOffsets + { + ResourceId descSet; + vector offsets; + }; + vector graphicsDescSets, computeDescSets; + uint32_t idxWidth; ResourceId ibuffer; vector vbuffers; diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index c5e713058..5ce25cedd 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -1208,9 +1208,10 @@ bool WrappedVulkan::Serialise_vkCmdBindDescriptorSets( layout = GetResourceManager()->GetLiveHandle(layoutid); // track while reading, as we need to track resource usage - vector &descsets = - (bind == VK_PIPELINE_BIND_POINT_GRAPHICS) ? m_RenderState.graphics.descSets - : m_RenderState.compute.descSets; + vector &descsets = + (bind == VK_PIPELINE_BIND_POINT_GRAPHICS) + ? m_BakedCmdBufferInfo[m_LastCmdBufferID].state.graphicsDescSets + : m_BakedCmdBufferInfo[m_LastCmdBufferID].state.computeDescSets; // expand as necessary if(descsets.size() < first + numSets)