[Mesa-dev] [PATCH 3/4] mesa: add generic compressed -> uncompressed format helper

Anuj Phogat anuj.phogat at gmail.com
Fri Aug 24 10:51:22 PDT 2012


On Fri, Aug 24, 2012 at 7:53 AM, Brian Paul <brianp at vmware.com> wrote:
> _mesa_generic_compressed_format_to_uncompressed_format() probably wins the
> prize for longest function name in Mesa.
> ---
>  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);
>
> --
> 1.7.3.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev

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


More information about the mesa-dev mailing list