From 83a0066f005ca069d793704653617d06cbdb5929 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 21 Jun 2018 14:24:22 +0100 Subject: [PATCH] Add support for VK_KHR_image_format_list --- renderdoc/driver/vulkan/vk_common.h | 2 ++ renderdoc/driver/vulkan/vk_core.cpp | 3 +++ renderdoc/driver/vulkan/vk_serialise.cpp | 23 ++++++++++++++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index 3279224b8..724886e7c 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -652,6 +652,7 @@ DECLARE_REFLECTION_STRUCT(VkDeviceGroupCommandBufferBeginInfo); DECLARE_REFLECTION_STRUCT(VkDeviceGroupRenderPassBeginInfo); DECLARE_REFLECTION_STRUCT(VkMemoryAllocateFlagsInfo); DECLARE_REFLECTION_STRUCT(VkProtectedSubmitInfo); +DECLARE_REFLECTION_STRUCT(VkImageFormatListCreateInfoKHR); DECLARE_DESERIALISE_TYPE(VkDeviceCreateInfo); DECLARE_DESERIALISE_TYPE(VkBufferCreateInfo); @@ -727,6 +728,7 @@ DECLARE_DESERIALISE_TYPE(VkDeviceGroupCommandBufferBeginInfo); DECLARE_DESERIALISE_TYPE(VkDeviceGroupRenderPassBeginInfo); DECLARE_DESERIALISE_TYPE(VkMemoryAllocateFlagsInfo); DECLARE_DESERIALISE_TYPE(VkProtectedSubmitInfo); +DECLARE_DESERIALISE_TYPE(VkImageFormatListCreateInfoKHR); #if defined(VK_KHR_external_memory_win32) || defined(VK_NV_external_memory_win32) DECLARE_REFLECTION_STRUCT(VkImportMemoryWin32HandleInfoNV); diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 62513c423..d82847741 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -737,6 +737,9 @@ static const VkExtensionProperties supportedExtensions[] = { VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME, VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION, }, + { + VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME, VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION, + }, { VK_KHR_MAINTENANCE1_EXTENSION_NAME, VK_KHR_MAINTENANCE1_SPEC_VERSION, }, diff --git a/renderdoc/driver/vulkan/vk_serialise.cpp b/renderdoc/driver/vulkan/vk_serialise.cpp index 0070b44f8..77afb5aab 100644 --- a/renderdoc/driver/vulkan/vk_serialise.cpp +++ b/renderdoc/driver/vulkan/vk_serialise.cpp @@ -252,7 +252,10 @@ SERIALISE_VK_HANDLES(); VkSamplerReductionModeCreateInfoEXT) \ \ /* VK_KHR_multiview */ \ - PNEXT_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, VkRenderPassMultiviewCreateInfo) + PNEXT_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, VkRenderPassMultiviewCreateInfo) \ + \ + /* VK_KHR_image_format_list */ \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR, VkImageFormatListCreateInfoKHR) template static void SerialiseNext(SerialiserType &ser, VkStructureType &sType, const void *&pNext) @@ -2487,6 +2490,23 @@ void Deserialise(const VkRenderPassMultiviewCreateInfo &el) delete[] el.pCorrelationMasks; } +template +void DoSerialise(SerialiserType &ser, VkImageFormatListCreateInfoKHR &el) +{ + RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER(viewFormatCount); + SERIALISE_MEMBER_ARRAY(pViewFormats, viewFormatCount); +} + +template <> +void Deserialise(const VkImageFormatListCreateInfoKHR &el) +{ + DeserialiseNext(el.pNext); + delete[] el.pViewFormats; +} + template void DoSerialise(SerialiserType &ser, VkDeviceQueueInfo2 &el) { @@ -3074,6 +3094,7 @@ INSTANTIATE_SERIALISE_TYPE(VkDeviceGroupCommandBufferBeginInfo); INSTANTIATE_SERIALISE_TYPE(VkDeviceGroupRenderPassBeginInfo); INSTANTIATE_SERIALISE_TYPE(VkMemoryAllocateFlagsInfo); INSTANTIATE_SERIALISE_TYPE(VkProtectedSubmitInfo); +INSTANTIATE_SERIALISE_TYPE(VkImageFormatListCreateInfoKHR); INSTANTIATE_SERIALISE_TYPE(DescriptorSetSlot); INSTANTIATE_SERIALISE_TYPE(ImageRegionState);