Mesa (master): mesa: add generic compressed -> uncompressed format helper

Brian Paul brianp at kemper.freedesktop.org
Fri Aug 24 20:19:08 UTC 2012


Module: Mesa
Branch: master
Commit: a3af27e99362c0da9f467a39427d32d1270a720f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a3af27e99362c0da9f467a39427d32d1270a720f

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Aug 24 08:43:42 2012 -0600

mesa: add generic compressed -> uncompressed format helper

_mesa_generic_compressed_format_to_uncompressed_format() probably wins the
prize for longest function name in Mesa.

Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>

---

 src/mesa/main/glformats.c |   39 +++++++++++++++++++++++++++++++++++++++
 src/mesa/main/glformats.h |    3 +++
 2 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
index b6f9e94..2d06cb7 100644
--- a/src/mesa/main/glformats.c
+++ b/src/mesa/main/glformats.c
@@ -971,6 +971,45 @@ _mesa_base_format_has_channel(GLenum base_format, GLenum pname)
 
 
 /**
+ * If format is a generic compressed format, return the corresponding
+ * non-compressed format.  For other formats, return the format as-is.
+ */
+GLenum
+_mesa_generic_compressed_format_to_uncompressed_format(GLenum format)
+{
+   switch (format) {
+   case GL_COMPRESSED_RED:
+      return GL_RED;
+   case GL_COMPRESSED_RG:
+      return GL_RG;
+   case GL_COMPRESSED_RGB:
+      return GL_RGB;
+   case GL_COMPRESSED_RGBA:
+      return GL_RGBA;
+   case GL_COMPRESSED_ALPHA:
+      return GL_ALPHA;
+   case GL_COMPRESSED_LUMINANCE:
+      return GL_LUMINANCE;
+   case GL_COMPRESSED_LUMINANCE_ALPHA:
+      return GL_LUMINANCE_ALPHA;
+   case GL_COMPRESSED_INTENSITY:
+      return GL_INTENSITY;
+   /* sRGB formats */
+   case GL_COMPRESSED_SRGB:
+      return GL_SRGB;
+   case GL_COMPRESSED_SRGB_ALPHA:
+      return GL_SRGB_ALPHA;
+   case GL_COMPRESSED_SLUMINANCE:
+      return GL_SLUMINANCE;
+   case GL_COMPRESSED_SLUMINANCE_ALPHA:
+      return GL_SLUMINANCE_ALPHA;
+   default:
+      return format;
+   }
+}
+
+
+/**
  * Do error checking of format/type combinations for glReadPixels,
  * glDrawPixels and glTex[Sub]Image.  Note that depending on the format
  * and type values, we may either generate GL_INVALID_OPERATION or
diff --git a/src/mesa/main/glformats.h b/src/mesa/main/glformats.h
index d553eae..24fbda9 100644
--- a/src/mesa/main/glformats.h
+++ b/src/mesa/main/glformats.h
@@ -92,6 +92,9 @@ extern GLboolean
 _mesa_base_format_has_channel(GLenum base_format, GLenum pname);
 
 extern GLenum
+_mesa_generic_compressed_format_to_uncompressed_format(GLenum format);
+
+extern GLenum
 _mesa_error_check_format_and_type(const struct gl_context *ctx,
                                   GLenum format, GLenum type);
 




More information about the mesa-commit mailing list