intel/isl: Add isl_format_is_valid
[mesa.git] / src / intel / vulkan / vk_format_info.h
index effed55c4bcd2696ad3bb1183290bb95414cad48..167938ac10998dce0906f3ee15dbf10f90190e57 100644 (file)
@@ -21,7 +21,8 @@
  * IN THE SOFTWARE.
  */
 
-#pragma once
+#ifndef VK_FORMAT_INFO_H
+#define VK_FORMAT_INFO_H
 
 #include <stdbool.h>
 #include <vulkan/vulkan.h>
@@ -46,6 +47,33 @@ vk_format_aspects(VkFormat format)
    case VK_FORMAT_D32_SFLOAT:
       return VK_IMAGE_ASPECT_DEPTH_BIT;
 
+   case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:
+   case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:
+   case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:
+   case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:
+   case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:
+   case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:
+   case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:
+   case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:
+   case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:
+   case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:
+   case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:
+   case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:
+      return (VK_IMAGE_ASPECT_PLANE_0_BIT_KHR |
+              VK_IMAGE_ASPECT_PLANE_1_BIT_KHR |
+              VK_IMAGE_ASPECT_PLANE_2_BIT_KHR);
+
+   case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:
+   case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:
+   case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:
+   case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:
+   case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:
+   case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:
+   case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:
+   case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:
+      return (VK_IMAGE_ASPECT_PLANE_0_BIT_KHR |
+              VK_IMAGE_ASPECT_PLANE_1_BIT_KHR);
+
    default:
       return VK_IMAGE_ASPECT_COLOR_BIT;
    }
@@ -63,3 +91,12 @@ vk_format_is_depth_or_stencil(VkFormat format)
    const VkImageAspectFlags aspects = vk_format_aspects(format);
    return aspects & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT);
 }
+
+static inline bool
+vk_format_has_depth(VkFormat format)
+{
+   const VkImageAspectFlags aspects = vk_format_aspects(format);
+   return aspects & VK_IMAGE_ASPECT_DEPTH_BIT;
+}
+
+#endif /* VK_FORMAT_INFO_H */