Mesa (main): vulkan: Refactor and better document vk_image_expand_aspect_mask

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


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

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

vulkan: Refactor and better document vk_image_expand_aspect_mask

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/vulkan/util/vk_image.c | 38 +++++++++++++++++++++++++++++---------
 1 file changed, 29 insertions(+), 9 deletions(-)

diff --git a/src/vulkan/util/vk_image.c b/src/vulkan/util/vk_image.c
index 64349adf748..89717739e2e 100644
--- a/src/vulkan/util/vk_image.c
+++ b/src/vulkan/util/vk_image.c
@@ -182,18 +182,38 @@ vk_image_usage(const struct vk_image *image,
    }
 }
 
+#define VK_IMAGE_ASPECT_ANY_COLOR_MASK_MESA ( \
+   VK_IMAGE_ASPECT_COLOR_BIT | \
+   VK_IMAGE_ASPECT_PLANE_0_BIT | \
+   VK_IMAGE_ASPECT_PLANE_1_BIT | \
+   VK_IMAGE_ASPECT_PLANE_2_BIT)
+
+/** Expands the given aspect mask relative to the image
+ *
+ * If the image has color plane aspects VK_IMAGE_ASPECT_COLOR_BIT has been
+ * requested, this returns the aspects of the underlying image.
+ *
+ * For example,
+ *
+ *    VK_IMAGE_ASPECT_COLOR_BIT
+ *
+ * will be converted to
+ *
+ *    VK_IMAGE_ASPECT_PLANE_0_BIT |
+ *    VK_IMAGE_ASPECT_PLANE_1_BIT |
+ *    VK_IMAGE_ASPECT_PLANE_2_BIT
+ *
+ * for an image of format VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM.
+ */
 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)
+   if (aspect_mask == VK_IMAGE_ASPECT_COLOR_BIT) {
+      assert(image->aspects & VK_IMAGE_ASPECT_ANY_COLOR_MASK_MESA);
       return image->aspects;
-
-   return aspect_mask;
+   } else {
+      assert(aspect_mask && !(aspect_mask & ~image->aspects));
+      return aspect_mask;
+   }
 }



More information about the mesa-commit mailing list