main/formats: Add a get_linear_format_srgb helper
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 28 Jun 2017 22:13:58 +0000 (15:13 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 13 Jul 2017 04:15:46 +0000 (21:15 -0700)
Reviewed-by: Chad Versace <chadversary@chromium.org>
src/mesa/main/format_fallback.py
src/mesa/main/formats.h

index a833eabf664008fa6b353002570bceeb89bbf70e..2f02d0d82bb03a705878e4874ed8cb6f288df993 100644 (file)
@@ -105,6 +105,28 @@ _mesa_get_srgb_format_linear(mesa_format format)
    }
 }
 
+/**
+ * For a linear format, return the corresponding sRGB color space format.
+ * For an sRGB format, return the format as-is.
+ * Assert-fails if the format is not sRGB and does not have an sRGB equivalent.
+ */
+mesa_format
+_mesa_get_linear_format_srgb(mesa_format format)
+{
+   switch (format) {
+%for unorm, srgb in unorm_to_srgb_map:
+   case ${unorm}:
+      return ${srgb};
+%endfor
+%for unorm, srgb in unorm_to_srgb_map:
+   case ${srgb}:
+%endfor
+      return format;
+   default:
+      unreachable("Given format does not have an sRGB equivalent");
+   }
+}
+
 /**
  * If the format has an alpha channel, and there exists a non-alpha
  * variant of the format with an identical bit layout, then return
index 62b5e0c1a7edaa567c0c803de9766f43373480c1..fbcbe36b71e68159d16c77f4f354bc2139d1cbfe 100644 (file)
@@ -748,6 +748,9 @@ _mesa_test_formats(void);
 extern mesa_format
 _mesa_get_srgb_format_linear(mesa_format format);
 
+extern mesa_format
+_mesa_get_linear_format_srgb(mesa_format format);
+
 extern mesa_format
 _mesa_get_uncompressed_format(mesa_format format);