Mesa (main): anv,vulkan: Move anv_image_expand_aspects to common code

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Aug 17 21:47:45 UTC 2021


Module: Mesa
Branch: main
Commit: e45e4e3ba1505d68f2bb2c6ac825095a28427e7a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e45e4e3ba1505d68f2bb2c6ac825095a28427e7a

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Wed Jul 21 23:26:24 2021 -0500

anv,vulkan: Move anv_image_expand_aspects to common code

Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12023>

---

 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)



More information about the mesa-commit mailing list