summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-06-28 15:13:58 -0700
committerJason Ekstrand <[email protected]>2017-07-12 21:15:46 -0700
commit14ce44a7bca30999601969563d97167751cdd326 (patch)
tree84530ba87473a1b987c8b0b010d1465dd2fca7cf
parent361eb1c6e765c393cb0b398124772b60a24ac36c (diff)
main/formats: Add a get_linear_format_srgb helper
Reviewed-by: Chad Versace <[email protected]>
-rw-r--r--src/mesa/main/format_fallback.py22
-rw-r--r--src/mesa/main/formats.h3
2 files changed, 25 insertions, 0 deletions
diff --git a/src/mesa/main/format_fallback.py b/src/mesa/main/format_fallback.py
index a833eabf664..2f02d0d82bb 100644
--- a/src/mesa/main/format_fallback.py
+++ b/src/mesa/main/format_fallback.py
@@ -106,6 +106,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
* the non-alpha format. Otherwise return the original format.
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index 62b5e0c1a7e..fbcbe36b71e 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -749,6 +749,9 @@ 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);
extern GLuint