From bc9f84f61b42ed949dd2691c8dbd66d479e83058 Mon Sep 17 00:00:00 2001 From: Benson Joeris Date: Thu, 30 May 2019 15:05:14 -0400 Subject: [PATCH] Vulkan: Add FormatImageAspects to get VkImageAspectFlags from VkFormat Change-Id: I82c13d0e106dcd579096f0a4e0e5ffe50bae3092 --- renderdoc/driver/vulkan/vk_resources.cpp | 16 ++++++++++++++++ renderdoc/driver/vulkan/vk_resources.h | 1 + 2 files changed, 17 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_resources.cpp b/renderdoc/driver/vulkan/vk_resources.cpp index 0859dadb5..0ef9594cf 100644 --- a/renderdoc/driver/vulkan/vk_resources.cpp +++ b/renderdoc/driver/vulkan/vk_resources.cpp @@ -2903,6 +2903,22 @@ VkFormat MakeVkFormat(ResourceFormat fmt) return ret; } +VkImageAspectFlags FormatImageAspects(VkFormat fmt) +{ + if(IsStencilOnlyFormat(fmt)) + return VK_IMAGE_ASPECT_STENCIL_BIT; + else if(IsDepthOnlyFormat(fmt)) + return VK_IMAGE_ASPECT_DEPTH_BIT; + else if(IsDepthAndStencilFormat(fmt)) + return VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT; + else if(GetYUVPlaneCount(fmt) == 3) + return VK_IMAGE_ASPECT_PLANE_0_BIT | VK_IMAGE_ASPECT_PLANE_1_BIT | VK_IMAGE_ASPECT_PLANE_2_BIT; + else if(GetYUVPlaneCount(fmt) == 2) + return VK_IMAGE_ASPECT_PLANE_0_BIT | VK_IMAGE_ASPECT_PLANE_1_BIT; + else + return VK_IMAGE_ASPECT_COLOR_BIT; +} + VkResourceRecord::~VkResourceRecord() { VkResourceType resType = Resource != NULL ? IdentifyTypeByPtr(Resource) : eResUnknown; diff --git a/renderdoc/driver/vulkan/vk_resources.h b/renderdoc/driver/vulkan/vk_resources.h index c6332b8fa..18ba56ec0 100644 --- a/renderdoc/driver/vulkan/vk_resources.h +++ b/renderdoc/driver/vulkan/vk_resources.h @@ -1344,6 +1344,7 @@ bool IsUIntFormat(VkFormat f); bool IsDoubleFormat(VkFormat f); bool IsSIntFormat(VkFormat f); bool IsYUVFormat(VkFormat f); +VkImageAspectFlags FormatImageAspects(VkFormat f); uint32_t GetYUVPlaneCount(VkFormat f); uint32_t GetYUVNumRows(VkFormat f, uint32_t height);