Get wrapper from info structure unwrapped resource

This commit is contained in:
baldurk
2015-09-19 21:43:05 +02:00
parent 7486dcf4fe
commit 89c4676f9c
4 changed files with 15 additions and 21 deletions
+2 -2
View File
@@ -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;
}
}
+3 -9
View File
@@ -24,12 +24,6 @@
#include "vk_info.h"
template<typename realtype>
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;
}
}
}
+6
View File
@@ -102,6 +102,12 @@ class VulkanResourceManager : public ResourceManager<WrappedVkRes*, RealVkRes, V
return ((WrappedVkNonDispRes *)res)->id;
}
template<typename realtype>
WrappedVkNonDispRes *GetNonDispWrapper(realtype real)
{
return (WrappedVkNonDispRes *)GetWrapper(RealVkRes(real.handle));
}
template<typename parenttype, typename realtype>
ResourceId WrapResource(parenttype parentObj, realtype &obj)
{
+4 -10
View File
@@ -29,12 +29,6 @@
#include "serialise/string_utils.h"
template<typename realtype>
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);
}
}
}