mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-16 19:46:40 +00:00
Fix up deserialise functions (delete/cleanup allocated arrays on replay)
This commit is contained in:
@@ -2754,6 +2754,8 @@ void Serialiser::Deserialise(const VkDeviceCreateInfo* const el) const
|
||||
if(m_Mode == READING)
|
||||
{
|
||||
RDCASSERT(el->pNext == NULL); // otherwise delete
|
||||
for(uint32_t i=0; i < el->queueCreateInfoCount; i++)
|
||||
delete[] el->pQueueCreateInfos[i].pQueuePriorities;
|
||||
delete [] el->pQueueCreateInfos;
|
||||
delete el->ppEnabledExtensionNames;
|
||||
delete el->ppEnabledLayerNames;
|
||||
@@ -2872,16 +2874,6 @@ void Serialiser::Serialise(const char *name, VkSparseBufferMemoryBindInfo &el)
|
||||
SerialiseComplexArray("pBinds", (VkSparseMemoryBind *&)el.pBinds, el.bindCount);
|
||||
}
|
||||
|
||||
template<>
|
||||
void Serialiser::Deserialise(const VkSparseBufferMemoryBindInfo* const el) const
|
||||
{
|
||||
if(m_Mode == READING)
|
||||
{
|
||||
RDCASSERT(el->pNext == NULL); // otherwise delete
|
||||
delete [] el->pBinds;
|
||||
}
|
||||
}
|
||||
|
||||
template<>
|
||||
void Serialiser::Serialise(const char *name, VkSparseImageOpaqueMemoryBindInfo &el)
|
||||
{
|
||||
@@ -2891,16 +2883,6 @@ void Serialiser::Serialise(const char *name, VkSparseImageOpaqueMemoryBindInfo &
|
||||
SerialiseComplexArray("pBinds", (VkSparseMemoryBind *&)el.pBinds, el.bindCount);
|
||||
}
|
||||
|
||||
template<>
|
||||
void Serialiser::Deserialise(const VkSparseImageOpaqueMemoryBindInfo* const el) const
|
||||
{
|
||||
if(m_Mode == READING)
|
||||
{
|
||||
RDCASSERT(el->pNext == NULL); // otherwise delete
|
||||
delete [] el->pBinds;
|
||||
}
|
||||
}
|
||||
|
||||
template<>
|
||||
void Serialiser::Serialise(const char *name, VkSparseImageMemoryBind &el)
|
||||
{
|
||||
@@ -2956,7 +2938,11 @@ void Serialiser::Deserialise(const VkBindSparseInfo* const el) const
|
||||
{
|
||||
RDCASSERT(el->pNext == NULL); // otherwise delete
|
||||
delete [] el->pWaitSemaphores;
|
||||
for(uint32_t i=0; i < el->bufferBindCount; i++)
|
||||
delete[] el->pBufferBinds[i].pBinds;
|
||||
delete [] el->pBufferBinds;
|
||||
for(uint32_t i=0; i < el->imageOpaqueBindCount; i++)
|
||||
delete[] el->pImageOpaqueBinds[i].pBinds;
|
||||
delete [] el->pImageOpaqueBinds;
|
||||
delete [] el->pImageBinds;
|
||||
delete [] el->pSignalSemaphores;
|
||||
@@ -3078,24 +3064,16 @@ void Serialiser::Deserialise(const VkRenderPassCreateInfo* const el) const
|
||||
if(m_Mode == READING)
|
||||
{
|
||||
RDCASSERT(el->pNext == NULL); // otherwise delete
|
||||
for (uint32_t i=0; i<el->attachmentCount; i++)
|
||||
{
|
||||
RDCASSERT(el->pAttachments[i].pNext == NULL); // otherwise delete
|
||||
}
|
||||
delete [] el->pAttachments;
|
||||
for (uint32_t i=0; i<el->subpassCount; i++)
|
||||
{
|
||||
RDCASSERT(el->pSubpasses[i].pNext == NULL); // otherwise delete
|
||||
delete el->pSubpasses[i].pInputAttachments;
|
||||
delete el->pSubpasses[i].pColorAttachments;
|
||||
delete el->pSubpasses[i].pResolveAttachments;
|
||||
delete el->pSubpasses[i].pPreserveAttachments;
|
||||
delete el->pSubpasses[i].pDepthStencilAttachment;
|
||||
delete[] el->pSubpasses[i].pInputAttachments;
|
||||
delete[] el->pSubpasses[i].pColorAttachments;
|
||||
delete[] el->pSubpasses[i].pResolveAttachments;
|
||||
if(el->pSubpasses[i].pPreserveAttachments) delete[] el->pSubpasses[i].pPreserveAttachments;
|
||||
}
|
||||
delete [] el->pSubpasses;
|
||||
for (uint32_t i=0; i<el->dependencyCount; i++)
|
||||
{
|
||||
RDCASSERT(el->pDependencies[i].pNext == NULL); // otherwise delete
|
||||
}
|
||||
delete [] el->pDependencies;
|
||||
}
|
||||
}
|
||||
@@ -3517,17 +3495,6 @@ void Serialiser::Serialise(const char *name, VkSpecializationInfo &el)
|
||||
SerialiseComplexArray("pMapEntries", (VkSpecializationMapEntry *&)el.pMapEntries, el.mapEntryCount);
|
||||
}
|
||||
|
||||
template<>
|
||||
void Serialiser::Deserialise(const VkSpecializationInfo* const el) const
|
||||
{
|
||||
if(m_Mode == READING)
|
||||
{
|
||||
RDCASSERT(el->pNext == NULL); // otherwise delete
|
||||
delete [] (byte *)(el->pData);
|
||||
delete [] el->pMapEntries;
|
||||
}
|
||||
}
|
||||
|
||||
template<>
|
||||
void Serialiser::Serialise(const char *name, VkPipelineCacheCreateInfo &el)
|
||||
{
|
||||
@@ -3767,8 +3734,8 @@ void Serialiser::Deserialise(const VkGraphicsPipelineCreateInfo* const el) const
|
||||
if (el->pViewportState)
|
||||
{
|
||||
RDCASSERT(el->pViewportState->pNext == NULL); // otherwise delete
|
||||
delete [] el->pViewportState->pViewports;
|
||||
delete [] el->pViewportState->pScissors;
|
||||
if(el->pViewportState->pViewports) delete [] el->pViewportState->pViewports;
|
||||
if(el->pViewportState->pScissors) delete [] el->pViewportState->pScissors;
|
||||
delete el->pViewportState;
|
||||
}
|
||||
if (el->pRasterizationState)
|
||||
@@ -3796,7 +3763,7 @@ void Serialiser::Deserialise(const VkGraphicsPipelineCreateInfo* const el) const
|
||||
if (el->pDynamicState)
|
||||
{
|
||||
RDCASSERT(el->pDynamicState->pNext == NULL); // otherwise delete
|
||||
delete [] el->pDynamicState->pDynamicStates;
|
||||
if(el->pDynamicState->pDynamicStates) delete [] el->pDynamicState->pDynamicStates;
|
||||
delete el->pDynamicState;
|
||||
}
|
||||
for (uint32_t i=0; i<el->stageCount; i++)
|
||||
@@ -3805,7 +3772,7 @@ void Serialiser::Deserialise(const VkGraphicsPipelineCreateInfo* const el) const
|
||||
if (el->pStages[i].pSpecializationInfo)
|
||||
{
|
||||
delete [] (byte *)(el->pStages[i].pSpecializationInfo->pData);
|
||||
delete [] el->pStages[i].pSpecializationInfo->pMap;
|
||||
delete [] el->pStages[i].pSpecializationInfo->pMapEntries;
|
||||
delete el->pStages[i].pSpecializationInfo;
|
||||
}
|
||||
}
|
||||
@@ -3828,6 +3795,22 @@ void Serialiser::Serialise(const char *name, VkComputePipelineCreateInfo &el)
|
||||
Serialise("basePipelineIndex", el.basePipelineIndex);
|
||||
}
|
||||
|
||||
template<>
|
||||
void Serialiser::Deserialise(const VkComputePipelineCreateInfo* const el) const
|
||||
{
|
||||
if(m_Mode == READING)
|
||||
{
|
||||
RDCASSERT(el->pNext == NULL); // otherwise delete
|
||||
RDCASSERT(el->stage.pNext == NULL); // otherwise delete
|
||||
if (el->stage.pSpecializationInfo)
|
||||
{
|
||||
delete [] (byte *)(el->stage.pSpecializationInfo->pData);
|
||||
delete [] el->stage.pSpecializationInfo->pMapEntries;
|
||||
delete el->stage.pSpecializationInfo;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template<>
|
||||
void Serialiser::Serialise(const char *name, VkDescriptorPoolSize &el)
|
||||
{
|
||||
@@ -3939,9 +3922,9 @@ void Serialiser::Deserialise(const VkWriteDescriptorSet* const el) const
|
||||
if(m_Mode == READING)
|
||||
{
|
||||
RDCASSERT(el->pNext == NULL); // otherwise delete
|
||||
delete [] el->pImageInfo;
|
||||
delete [] el->pBufferInfo;
|
||||
delete [] el->pTexelBufferView;
|
||||
if(el->pImageInfo) delete[] el->pImageInfo;
|
||||
if(el->pBufferInfo) delete[] el->pBufferInfo;
|
||||
if(el->pTexelBufferView) delete[] el->pTexelBufferView;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4023,7 +4006,8 @@ void Serialiser::Deserialise(const VkDescriptorSetLayoutCreateInfo* const el) co
|
||||
{
|
||||
RDCASSERT(el->pNext == NULL); // otherwise delete
|
||||
for (uint32_t i=0; i<el->bindingCount; i++)
|
||||
delete [] el->pBinding[i].pImmutableSamplers;
|
||||
if(el->pBinding[i].pImmutableSamplers)
|
||||
delete[] el->pBinding[i].pImmutableSamplers;
|
||||
delete [] el->pBinding;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,6 +127,7 @@ template<> void Serialiser::Serialise(const char *name, VkSwapchainCreateInfoKHR
|
||||
template<> void Serialiser::Deserialise(const VkDeviceCreateInfo* const el) const;
|
||||
template<> void Serialiser::Deserialise(const VkBufferCreateInfo* const el) const;
|
||||
template<> void Serialiser::Deserialise(const VkImageCreateInfo* const el) const;
|
||||
template<> void Serialiser::Deserialise(const VkBindSparseInfo* const el) const;
|
||||
template<> void Serialiser::Deserialise(const VkFramebufferCreateInfo* const el) const;
|
||||
template<> void Serialiser::Deserialise(const VkRenderPassCreateInfo* const el) const;
|
||||
template<> void Serialiser::Deserialise(const VkRenderPassBeginInfo* const el) const;
|
||||
@@ -134,6 +135,7 @@ template<> void Serialiser::Deserialise(const VkPipelineCacheCreateInfo* const e
|
||||
template<> void Serialiser::Deserialise(const VkPipelineLayoutCreateInfo* const el) const;
|
||||
template<> void Serialiser::Deserialise(const VkShaderModuleCreateInfo* const el) const;
|
||||
template<> void Serialiser::Deserialise(const VkGraphicsPipelineCreateInfo* const el) const;
|
||||
template<> void Serialiser::Deserialise(const VkComputePipelineCreateInfo* const el) const;
|
||||
template<> void Serialiser::Deserialise(const VkDescriptorPoolCreateInfo* const el) const;
|
||||
template<> void Serialiser::Deserialise(const VkWriteDescriptorSet* const el) const;
|
||||
template<> void Serialiser::Deserialise(const VkDescriptorSetLayoutCreateInfo* const el) const;
|
||||
|
||||
Reference in New Issue
Block a user