anv: Add func anv_get_isl_format()
authorChad Versace <chad.versace@intel.com>
Sat, 5 Dec 2015 00:18:35 +0000 (16:18 -0800)
committerChad Versace <chad.versace@intel.com>
Sat, 5 Dec 2015 00:37:05 +0000 (16:37 -0800)
src/vulkan/anv_formats.c
src/vulkan/anv_private.h

index abbf667a079b7fc6fce6de325a85432745f66942..19de40b52c2a46b688b718771240bb7ecfd5208f 100644 (file)
@@ -221,6 +221,29 @@ anv_format_for_vk_format(VkFormat format)
    return &anv_formats[format];
 }
 
+/**
+ * Exactly one bit must be set in \a aspect.
+ */
+enum isl_format
+anv_get_isl_format(VkFormat format, VkImageAspectFlags aspect)
+{
+   const struct anv_format *anv_fmt = &anv_formats[format];
+
+   switch (aspect) {
+   case VK_IMAGE_ASPECT_COLOR_BIT:
+      return anv_fmt->surface_format;
+   case VK_IMAGE_ASPECT_DEPTH_BIT:
+      assert(anv_fmt->depth_format != 0);
+      return anv_fmt->surface_format;
+   case VK_IMAGE_ASPECT_STENCIL_BIT:
+      assert(anv_fmt->has_stencil);
+      return ISL_FORMAT_R8_UINT;
+   default:
+      unreachable("bad VkImageAspect");
+      return ISL_FORMAT_UNSUPPORTED;
+   }
+}
+
 // Format capabilities
 
 void anv_validate_GetPhysicalDeviceFormatProperties(
index c1b777e5973a0236d58a8f1ac3f6925c7ec95ca7..156905ffa5d19dcb5d30fbc7655a379c26065a6b 100644 (file)
@@ -1385,6 +1385,9 @@ extern const struct anv_format *const anv_format_s8_uint;
 const struct anv_format *
 anv_format_for_vk_format(VkFormat format);
 
+enum isl_format
+anv_get_isl_format(VkFormat format, VkImageAspectFlags aspect);
+
 static inline bool
 anv_format_is_color(const struct anv_format *format)
 {