From a3af27e99362c0da9f467a39427d32d1270a720f Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 24 Aug 2012 08:43:42 -0600 Subject: [PATCH] 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 --- src/mesa/main/glformats.c | 39 +++++++++++++++++++++++++++++++++++++++ src/mesa/main/glformats.h | 3 +++ 2 files changed, 42 insertions(+) diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c index b6f9e94f5f5..2d06cb7151b 100644 --- a/src/mesa/main/glformats.c +++ b/src/mesa/main/glformats.c @@ -970,6 +970,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 diff --git a/src/mesa/main/glformats.h b/src/mesa/main/glformats.h index d553eae0a0a..24fbda99137 100644 --- a/src/mesa/main/glformats.h +++ b/src/mesa/main/glformats.h @@ -91,6 +91,9 @@ _mesa_base_format_to_integer_format(GLenum format); 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); -- 2.30.2