From 08f9a93574fe0b6a23532d451dddf1c288a3a595 Mon Sep 17 00:00:00 2001 From: Benson Joeris Date: Thu, 30 May 2019 15:02:39 -0400 Subject: [PATCH] Vulkan: Add ImageLayouts::imageType The image type is required to correctly handle 3D images accessed through 2D views Change-Id: I18364584413d83c186535f1091226c00d2bbf018 --- renderdoc/driver/vulkan/vk_resources.h | 1 + renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp | 2 ++ renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp | 2 ++ 3 files changed, 5 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_resources.h b/renderdoc/driver/vulkan/vk_resources.h index 18ba56ec0..a90d0240e 100644 --- a/renderdoc/driver/vulkan/vk_resources.h +++ b/renderdoc/driver/vulkan/vk_resources.h @@ -1329,6 +1329,7 @@ struct ImageLayouts int layerCount, levelCount, sampleCount; VkExtent3D extent; VkFormat format; + VkImageType imageType; }; DECLARE_REFLECTION_STRUCT(ImageLayouts); diff --git a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp index 585707d2d..0d5af8585 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp @@ -1464,6 +1464,7 @@ bool WrappedVulkan::Serialise_vkCreateImage(SerialiserType &ser, VkDevice device layouts.levelCount = CreateInfo.mipLevels; layouts.extent = CreateInfo.extent; layouts.format = CreateInfo.format; + layouts.imageType = CreateInfo.imageType; range.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; if(IsDepthOnlyFormat(CreateInfo.format)) @@ -1759,6 +1760,7 @@ VkResult WrappedVulkan::vkCreateImage(VkDevice device, const VkImageCreateInfo * layout->sampleCount = (int)pCreateInfo->samples; layout->extent = pCreateInfo->extent; layout->format = pCreateInfo->format; + layout->imageType = pCreateInfo->imageType; layout->subresourceStates.clear(); diff --git a/renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp index 5cad936c1..9e9ff6bd4 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_wsi_funcs.cpp @@ -448,6 +448,7 @@ bool WrappedVulkan::Serialise_vkCreateSwapchainKHR(SerialiserType &ser, VkDevice m_ImageLayouts[liveId].extent = iminfo.extent; m_ImageLayouts[liveId].format = iminfo.format; + m_ImageLayouts[liveId].imageType = iminfo.type; m_ImageLayouts[liveId].subresourceStates.clear(); m_ImageLayouts[liveId].subresourceStates.push_back(ImageRegionState( @@ -584,6 +585,7 @@ void WrappedVulkan::WrapAndProcessCreatedSwapchain(VkDevice device, { SCOPED_LOCK(m_ImageLayoutsLock); m_ImageLayouts[imid].format = pCreateInfo->imageFormat; + m_ImageLayouts[imid].imageType = VK_IMAGE_TYPE_2D; m_ImageLayouts[imid].subresourceStates.clear(); m_ImageLayouts[imid].subresourceStates.push_back(ImageRegionState(