From 67432fbde6eb8fda5807b215ea9376cb7a839061 Mon Sep 17 00:00:00 2001 From: baldurk Date: Sun, 30 Aug 2015 16:48:56 +0200 Subject: [PATCH] attachment bind info isn't POD, can't serialise as POD array --- renderdoc/driver/vulkan/vk_common.cpp | 16 +++++++++++++--- renderdoc/driver/vulkan/vk_common.h | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_common.cpp b/renderdoc/driver/vulkan/vk_common.cpp index 5bd6189b3..bdb01f437 100644 --- a/renderdoc/driver/vulkan/vk_common.cpp +++ b/renderdoc/driver/vulkan/vk_common.cpp @@ -1263,6 +1263,15 @@ void Serialiser::Serialise(const char *name, VkImageViewCreateInfo &el) Serialise("subresourceRange", el.subresourceRange); } +template<> +void Serialiser::Serialise(const char *name, VkAttachmentBindInfo &el) +{ + ScopedContext scope(this, this, name, "VkAttachmentBindInfo", 0, true); + + SerialiseObject(VkAttachmentView, "view", el.view); + Serialise("layout", el.layout); +} + template<> void Serialiser::Serialise(const char *name, VkFramebufferCreateInfo &el) { @@ -1274,9 +1283,10 @@ void Serialiser::Serialise(const char *name, VkFramebufferCreateInfo &el) SerialiseObject(VkRenderPass, "renderPass", el.renderPass); Serialise("attachmentCount", el.attachmentCount); - size_t sz = el.attachmentCount; - if(m_Mode == READING) el.pAttachments = NULL; - Serialise("pAttachments", (VkAttachmentBindInfo *&)el.pAttachments, sz); + if(m_Mode == READING) + el.pAttachments = el.attachmentCount ? new VkAttachmentBindInfo[el.attachmentCount] : NULL; + for(uint32_t i=0; i < el.attachmentCount; i++) + Serialise("pAttachments[]", (VkAttachmentBindInfo &)el.pAttachments[i]); Serialise("width", el.width); Serialise("height", el.height); Serialise("layers", el.layers); diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index 9b903a497..7b5924c0c 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -53,6 +53,7 @@ template<> void Serialiser::Serialise(const char *name, VkBufferCreateInfo &el); template<> void Serialiser::Serialise(const char *name, VkBufferViewCreateInfo &el); template<> void Serialiser::Serialise(const char *name, VkImageCreateInfo &el); template<> void Serialiser::Serialise(const char *name, VkImageViewCreateInfo &el); +template<> void Serialiser::Serialise(const char *name, VkAttachmentBindInfo &el); template<> void Serialiser::Serialise(const char *name, VkFramebufferCreateInfo &el); template<> void Serialiser::Serialise(const char *name, VkRenderPassCreateInfo &el); template<> void Serialiser::Serialise(const char *name, VkRenderPassBeginInfo &el);