diff --git a/renderdoc/driver/vulkan/vk_common.cpp b/renderdoc/driver/vulkan/vk_common.cpp index 16f86b671..8e1615775 100644 --- a/renderdoc/driver/vulkan/vk_common.cpp +++ b/renderdoc/driver/vulkan/vk_common.cpp @@ -2250,6 +2250,16 @@ void Serialiser::Serialise(const char *name, VkBufferCreateInfo &el) SerialisePODArray("pQueueFamilyIndices", (uint32_t *&)el.pQueueFamilyIndices, el.queueFamilyCount); } +template<> +Serialiser::Deserialise::~Deserialise() +{ + if(m_Mode == READING) + { + RDCASSERT(pNext == NULL); // otherwise delete + delete [] pQueueFamilyIndices; + } +} + template<> void Serialiser::Serialise(const char *name, VkBufferViewCreateInfo &el) { @@ -2289,6 +2299,16 @@ void Serialiser::Serialise(const char *name, VkImageCreateInfo &el) Serialise("initialLayout", el.initialLayout); } +template<> +Serialiser::Deserialise::~Deserialise() +{ + if(m_Mode == READING) + { + RDCASSERT(pNext == NULL); // otherwise delete + delete [] pQueueFamilyIndices; + } +} + template<> void Serialiser::Serialise(const char *name, VkImageViewCreateInfo &el) { @@ -2473,6 +2493,16 @@ void Serialiser::Serialise(const char *name, VkRenderPassBeginInfo &el) SerialisePODArray("pClearValues", (VkClearValue *&)el.pClearValues, el.clearValueCount); } +template<> +Serialiser::Deserialise::~Deserialise() +{ + if(m_Mode == READING) + { + RDCASSERT(pNext == NULL); // otherwise delete + delete [] pClearValues; + } +} + template<> void Serialiser::Serialise(const char *name, VkVertexInputBindingDescription &el) { diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index 31c0e2ee4..b74cd37ae 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -517,7 +517,7 @@ bool WrappedVulkan::Serialise_vkCmdBeginRenderPass( VkRenderPassContents contents) { SERIALISE_ELEMENT(ResourceId, cmdid, GetResID(cmdBuffer)); - SERIALISE_ELEMENT(VkRenderPassBeginInfo, beginInfo, *pRenderPassBegin); + SERIALISE_ELEMENT_CLASS(VkRenderPassBeginInfo, beginInfo, *pRenderPassBegin); SERIALISE_ELEMENT(VkRenderPassContents, cont, contents); if(m_State < WRITING) diff --git a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp index 10a0fff47..473406a38 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp @@ -511,7 +511,7 @@ bool WrappedVulkan::Serialise_vkCreateBuffer( VkBuffer* pBuffer) { SERIALISE_ELEMENT(ResourceId, devId, GetResID(device)); - SERIALISE_ELEMENT(VkBufferCreateInfo, info, *pCreateInfo); + SERIALISE_ELEMENT_CLASS(VkBufferCreateInfo, info, *pCreateInfo); SERIALISE_ELEMENT(ResourceId, id, GetResID(*pBuffer)); if(m_State == READING) @@ -654,7 +654,7 @@ bool WrappedVulkan::Serialise_vkCreateImage( VkImage* pImage) { SERIALISE_ELEMENT(ResourceId, devId, GetResID(device)); - SERIALISE_ELEMENT(VkImageCreateInfo, info, *pCreateInfo); + SERIALISE_ELEMENT_CLASS(VkImageCreateInfo, info, *pCreateInfo); SERIALISE_ELEMENT(ResourceId, id, GetResID(*pImage)); if(m_State == READING)