From 89c4676f9cb59f16589eaf923db195a5a0d16ffb Mon Sep 17 00:00:00 2001 From: baldurk Date: Sat, 19 Sep 2015 21:43:05 +0200 Subject: [PATCH] Get wrapper from info structure unwrapped resource --- renderdoc/driver/vulkan/vk_core.cpp | 4 ++-- renderdoc/driver/vulkan/vk_info.cpp | 12 +++--------- renderdoc/driver/vulkan/vk_manager.h | 6 ++++++ renderdoc/driver/vulkan/vk_replay.cpp | 14 ++++---------- 4 files changed, 15 insertions(+), 21 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index f728f3b25..341a33951 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -4200,8 +4200,8 @@ bool WrappedVulkan::Serialise_vkCmdBeginRenderPass( m_PartialReplayData.renderPassActive = true; ObjDisp(cmdBuffer)->CmdBeginRenderPass(Unwrap(cmdBuffer), &beginInfo, cont); - m_PartialReplayData.state.renderPass = GetResourceManager()->GetOriginalID(GetResID(beginInfo.renderPass)); - m_PartialReplayData.state.framebuffer = GetResourceManager()->GetOriginalID(GetResID(beginInfo.framebuffer)); + m_PartialReplayData.state.renderPass = GetResourceManager()->GetOriginalID(VKMGR()->GetNonDispWrapper(beginInfo.renderPass)->id); + m_PartialReplayData.state.framebuffer = GetResourceManager()->GetOriginalID(VKMGR()->GetNonDispWrapper(beginInfo.framebuffer)->id); m_PartialReplayData.state.renderArea = beginInfo.renderArea; } } diff --git a/renderdoc/driver/vulkan/vk_info.cpp b/renderdoc/driver/vulkan/vk_info.cpp index c8ac88831..2417bb738 100644 --- a/renderdoc/driver/vulkan/vk_info.cpp +++ b/renderdoc/driver/vulkan/vk_info.cpp @@ -24,12 +24,6 @@ #include "vk_info.h" -template -static ResourceId GetIDFromReal(realtype real) -{ - return ((WrappedVkNonDispRes *)VKMGR()->GetWrapper(RealVkRes(real.handle)))->id; -} - void VulkanCreationInfo::Pipeline::Init(const VkGraphicsPipelineCreateInfo* pCreateInfo) { flags = pCreateInfo->flags; @@ -39,7 +33,7 @@ void VulkanCreationInfo::Pipeline::Init(const VkGraphicsPipelineCreateInfo* pCre // VkPipelineShaderStageCreateInfo RDCEraseEl(shaders); for(uint32_t i=0; i < pCreateInfo->stageCount; i++) - shaders[ pCreateInfo->pStages[i].stage ] = GetIDFromReal(pCreateInfo->pStages[i].shader); + shaders[ pCreateInfo->pStages[i].stage ] = VKMGR()->GetNonDispWrapper(pCreateInfo->pStages[i].shader)->id; if(pCreateInfo->pVertexInputState) { @@ -160,7 +154,7 @@ void VulkanCreationInfo::Framebuffer::Init(const VkFramebufferCreateInfo* pCreat attachments.resize(pCreateInfo->attachmentCount); for(uint32_t i=0; i < pCreateInfo->attachmentCount; i++) - attachments[i].view = GetIDFromReal(pCreateInfo->pAttachments[i].view); + attachments[i].view = VKMGR()->GetNonDispWrapper(pCreateInfo->pAttachments[i].view)->id; } void VulkanCreationInfo::DescSetLayout::Init(const VkDescriptorSetLayoutCreateInfo* pCreateInfo) @@ -177,7 +171,7 @@ void VulkanCreationInfo::DescSetLayout::Init(const VkDescriptorSetLayoutCreateIn bindings[i].immutableSampler = new ResourceId[bindings[i].arraySize]; for(uint32_t s=0; s < bindings[i].arraySize; s++) - bindings[i].immutableSampler[s] = GetIDFromReal(pCreateInfo->pBinding[i].pImmutableSamplers[s]); + bindings[i].immutableSampler[s] = VKMGR()->GetNonDispWrapper(pCreateInfo->pBinding[i].pImmutableSamplers[s])->id; } } } diff --git a/renderdoc/driver/vulkan/vk_manager.h b/renderdoc/driver/vulkan/vk_manager.h index 38f2818ec..1aff7bdf1 100644 --- a/renderdoc/driver/vulkan/vk_manager.h +++ b/renderdoc/driver/vulkan/vk_manager.h @@ -102,6 +102,12 @@ class VulkanResourceManager : public ResourceManagerid; } + template + WrappedVkNonDispRes *GetNonDispWrapper(realtype real) + { + return (WrappedVkNonDispRes *)GetWrapper(RealVkRes(real.handle)); + } + template ResourceId WrapResource(parenttype parentObj, realtype &obj) { diff --git a/renderdoc/driver/vulkan/vk_replay.cpp b/renderdoc/driver/vulkan/vk_replay.cpp index f5d67c26e..874496ca0 100644 --- a/renderdoc/driver/vulkan/vk_replay.cpp +++ b/renderdoc/driver/vulkan/vk_replay.cpp @@ -29,12 +29,6 @@ #include "serialise/string_utils.h" -template -static ResourceId GetIDFromReal(realtype real) -{ - return ((WrappedVkNonDispRes *)VKMGR()->GetWrapper(RealVkRes(real.handle)))->id; -} - // VKTODOMED should share this between shader and C++ - need #include support in glslang struct displayuniforms { @@ -1313,15 +1307,15 @@ void VulkanReplay::SavePipelineState() if(layoutBind.immutableSampler) dst.bindings[b].elems[a].sampler = layoutBind.immutableSampler[a]; else if(info->sampler != VK_NULL_HANDLE) - dst.bindings[b].elems[a].sampler = rm->GetOriginalID(GetIDFromReal(info->sampler)); + dst.bindings[b].elems[a].sampler = rm->GetOriginalID(VKMGR()->GetNonDispWrapper(info->sampler)->id); // only one of these is ever set if(info->imageView != VK_NULL_HANDLE) - dst.bindings[b].elems[a].view = rm->GetOriginalID(GetIDFromReal(info->imageView)); + dst.bindings[b].elems[a].view = rm->GetOriginalID(VKMGR()->GetNonDispWrapper(info->imageView)->id); if(info->bufferView != VK_NULL_HANDLE) - dst.bindings[b].elems[a].view = rm->GetOriginalID(GetIDFromReal(info->bufferView)); + dst.bindings[b].elems[a].view = rm->GetOriginalID(VKMGR()->GetNonDispWrapper(info->bufferView)->id); if(info->attachmentView != VK_NULL_HANDLE) - dst.bindings[b].elems[a].view = rm->GetOriginalID(GetIDFromReal(info->attachmentView)); + dst.bindings[b].elems[a].view = rm->GetOriginalID(VKMGR()->GetNonDispWrapper(info->attachmentView)->id); } } }