From 7796863b0036e5cffaac4921b5d42432528d4ea8 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 9 Mar 2017 14:06:16 +0000 Subject: [PATCH] Update resource usage entries recursively in draws for vkCmdExecCommands --- renderdoc/driver/vulkan/vk_core.h | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 836b7632b..b7cd6bd83 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -77,23 +77,36 @@ struct VulkanDrawcallTreeNode void InsertAndUpdateIDs(const VulkanDrawcallTreeNode &child, uint32_t baseEventID, uint32_t baseDrawID) { + resourceUsage.reserve(child.resourceUsage.size()); for(size_t i = 0; i < child.resourceUsage.size(); i++) { resourceUsage.push_back(child.resourceUsage[i]); resourceUsage.back().second.eventID += baseEventID; } + children.reserve(child.children.size()); for(size_t i = 0; i < child.children.size(); i++) { children.push_back(child.children[i]); - children.back().draw.eventID += baseEventID; - children.back().draw.drawcallID += baseDrawID; - - for(int32_t e = 0; e < children.back().draw.events.count; e++) - children.back().draw.events[e].eventID += baseEventID; + children.back().UpdateIDs(baseEventID, baseDrawID); } } + void UpdateIDs(uint32_t baseEventID, uint32_t baseDrawID) + { + draw.eventID += baseEventID; + draw.drawcallID += baseDrawID; + + for(int32_t i = 0; i < draw.events.count; i++) + draw.events[i].eventID += baseEventID; + + for(size_t i = 0; i < resourceUsage.size(); i++) + resourceUsage[i].second.eventID += baseEventID; + + for(size_t i = 0; i < children.size(); i++) + children[i].UpdateIDs(baseEventID, baseDrawID); + } + vector Bake() { vector ret;