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 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); -- 2.7.4