From e45e4e3ba1505d68f2bb2c6ac825095a28427e7a Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Wed, 21 Jul 2021 23:26:24 -0500 Subject: [PATCH] anv,vulkan: Move anv_image_expand_aspects to common code Reviewed-by: Iago Toral Quiroga Reviewed-by: Lionel Landwerlin Part-of: --- src/intel/vulkan/anv_image.c | 2 +- src/intel/vulkan/anv_private.h | 16 +--------------- src/intel/vulkan/genX_cmd_buffer.c | 2 +- src/vulkan/util/vk_image.c | 16 ++++++++++++++++ src/vulkan/util/vk_image.h | 3 +++ 5 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index 1ccafdcaf33..7bd4bece096 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -2697,7 +2697,7 @@ anv_CreateImageView(VkDevice _device, * VK_IMAGE_ASPECT_PLANE_2_BIT for an image of format * VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM. */ - iview->aspects = anv_image_expand_aspects(image, range->aspectMask); + iview->aspects = vk_image_expand_aspect_mask(&image->vk, range->aspectMask); iview->n_planes = anv_image_aspect_get_planes(iview->aspects); iview->vk_format = pCreateInfo->format; diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 67554327941..fd4a6f8f68d 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -3826,7 +3826,7 @@ anv_aspect_to_plane(VkImageAspectFlags all_aspects, } #define anv_foreach_image_aspect_bit(b, image, aspects) \ - u_foreach_bit(b, anv_image_expand_aspects(image, aspects)) + u_foreach_bit(b, vk_image_expand_aspect_mask(&(image)->vk, aspects)) const struct anv_format * anv_get_format(VkFormat format); @@ -4346,20 +4346,6 @@ anv_get_levelCount(const struct anv_image *image, image->vk.mip_levels - range->baseMipLevel : range->levelCount; } -static inline VkImageAspectFlags -anv_image_expand_aspects(const struct anv_image *image, - VkImageAspectFlags aspects) -{ - /* If the underlying image has color plane aspects and - * VK_IMAGE_ASPECT_COLOR_BIT has been requested, then return the aspects of - * the underlying image. */ - if ((image->vk.aspects & VK_IMAGE_ASPECT_PLANES_BITS_ANV) != 0 && - aspects == VK_IMAGE_ASPECT_COLOR_BIT) - return image->vk.aspects; - - return aspects; -} - static inline bool anv_image_aspects_compatible(VkImageAspectFlags aspects1, VkImageAspectFlags aspects2) diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index d084c2f62ef..58893c3327b 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -2459,7 +2459,7 @@ void genX(CmdPipelineBarrier)( if (range->aspectMask & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV) { VkImageAspectFlags color_aspects = - anv_image_expand_aspects(image, range->aspectMask); + vk_image_expand_aspect_mask(&image->vk, range->aspectMask); anv_foreach_image_aspect_bit(aspect_bit, image, color_aspects) { transition_color_buffer(cmd_buffer, image, 1UL << aspect_bit, range->baseMipLevel, diff --git a/src/vulkan/util/vk_image.c b/src/vulkan/util/vk_image.c index f5c1212d89d..64349adf748 100644 --- a/src/vulkan/util/vk_image.c +++ b/src/vulkan/util/vk_image.c @@ -181,3 +181,19 @@ vk_image_usage(const struct vk_image *image, return image->usage; } } + +VkImageAspectFlags +vk_image_expand_aspect_mask(const struct vk_image *image, + VkImageAspectFlags aspect_mask) +{ + /* If the underlying image has color plane aspects and + * VK_IMAGE_ASPECT_COLOR_BIT has been requested, then return the aspects of + * the underlying image. */ + if (!(image->aspects & (VK_IMAGE_ASPECT_PLANE_0_BIT | + VK_IMAGE_ASPECT_PLANE_1_BIT | + VK_IMAGE_ASPECT_PLANE_2_BIT)) && + aspect_mask == VK_IMAGE_ASPECT_COLOR_BIT) + return image->aspects; + + return aspect_mask; +} diff --git a/src/vulkan/util/vk_image.h b/src/vulkan/util/vk_image.h index ae3a0e62c3e..c35b99b700d 100644 --- a/src/vulkan/util/vk_image.h +++ b/src/vulkan/util/vk_image.h @@ -77,6 +77,9 @@ void vk_image_set_format(struct vk_image *image, VkFormat format); VkImageUsageFlags vk_image_usage(const struct vk_image *image, VkImageAspectFlags aspect_mask); +VkImageAspectFlags vk_image_expand_aspect_mask(const struct vk_image *image, + VkImageAspectFlags aspect_mask); + static inline VkExtent3D vk_image_mip_level_extent(const struct vk_image *image, uint32_t mip_level)