radv: add radv_dump_pipeline_state() helper
[mesa.git] / src / amd / vulkan / vk_format.h
index 43265ed3d979aa9a85faabc5a1534753f5b09343..933db4d961c0b3bac6d98787108158a6fd7cf6f5 100644 (file)
@@ -416,6 +416,46 @@ vk_format_is_srgb(VkFormat format)
        return desc->colorspace == VK_FORMAT_COLORSPACE_SRGB;
 }
 
+static inline VkFormat
+vk_format_no_srgb(VkFormat format)
+{
+       switch(format) {
+       case VK_FORMAT_R8_SRGB:
+               return VK_FORMAT_R8_UNORM;
+       case VK_FORMAT_R8G8_SRGB:
+               return VK_FORMAT_R8G8_UNORM;
+       case VK_FORMAT_R8G8B8_SRGB:
+               return VK_FORMAT_R8G8B8_UNORM;
+       case VK_FORMAT_B8G8R8_SRGB:
+               return VK_FORMAT_B8G8R8_UNORM;
+       case VK_FORMAT_R8G8B8A8_SRGB:
+               return VK_FORMAT_R8G8B8A8_UNORM;
+       case VK_FORMAT_B8G8R8A8_SRGB:
+               return VK_FORMAT_B8G8R8A8_UNORM;
+       case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+               return VK_FORMAT_A8B8G8R8_UNORM_PACK32;
+       case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
+               return VK_FORMAT_BC1_RGB_UNORM_BLOCK;
+       case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
+               return VK_FORMAT_BC1_RGBA_UNORM_BLOCK;
+       case VK_FORMAT_BC2_SRGB_BLOCK:
+               return VK_FORMAT_BC2_UNORM_BLOCK;
+       case VK_FORMAT_BC3_SRGB_BLOCK:
+               return VK_FORMAT_BC3_UNORM_BLOCK;
+       case VK_FORMAT_BC7_SRGB_BLOCK:
+               return VK_FORMAT_BC7_UNORM_BLOCK;
+       case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
+               return VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK;
+       case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
+               return VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK;
+       case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
+               return VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK;
+       default:
+               assert(!vk_format_is_srgb(format));
+               return format;
+       }
+}
+
 static inline VkFormat
 vk_format_stencil_only(VkFormat format)
 {
@@ -488,4 +528,11 @@ vk_to_non_srgb_format(VkFormat format)
        }
 }
 
+static inline unsigned
+vk_format_get_nr_components(VkFormat format)
+{
+       const struct vk_format_description *desc = vk_format_description(format);
+       return desc->nr_channels;
+}
+
 #endif /* VK_FORMAT_H */