[Mesa-dev] [PATCH] mesa: Add COMPRESSED_RGBA_S3TC_DXT1_EXT to COMPRESSED_TEXTURE_FORMATS for GLES

Brian Paul brianp at vmware.com
Tue Jan 14 14:28:43 PST 2014


On 01/14/2014 02:19 PM, Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> The ES and desktop GL specs diverge here.  Yay!
>
> In desktop OpenGL, the driver can perform online compression of
> uncompressed texture data.  GL_NUM_COMPRESSED_TEXTURE_FORMATS and
> GL_COMPRESSED_TEXTURE_FORMATS give the application a list of formats
> that it could ask the driver to compress with some expectation of
> quality.  The GL_ARB_texture_compression spec calls this "suitable for
> general-purpose usage."  As noted above, this means
> GL_COMPRESSED_RGBA_S3TC_DXT1_EXT is not included in the list.
>
> In OpenGL ES, the driver never performs compression.
> GL_NUM_COMPRESSED_TEXTURE_FORMATS and GL_COMPRESSED_TEXTURE_FORMATS give
> the application a list of formats that the driver can receive from the
> application.  It is the *complete* list of formats.  The
> GL_EXT_texture_compression_s3tc spec says:
>
>      "New State for OpenGL ES 2.0.25 and 3.0.2 Specifications
>
>          The queries for NUM_COMPRESSED_TEXTURE_FORMATS and
>          COMPRESSED_TEXTURE_FORMATS include COMPRESSED_RGB_S3TC_DXT1_EXT,
>          COMPRESSED_RGBA_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT3_EXT,
>          and COMPRESSED_RGBA_S3TC_DXT5_EXT."
>
> Note that the addition is only to the OpenGL ES specification!
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> See-also: http://lists.freedesktop.org/archives/mesa-dev/2013-October/047439.html
> Cc: Marek Olšák <marek.olsak at amd.com>
> Cc: Brian Paul <brianp at vmware.com>
> Cc: "10.0" <mesa-stable at lists.freedesktop.org>
> ---
>   src/mesa/main/texcompress.c | 37 +++++++++++++++++++++++++++++++++++++
>   1 file changed, 37 insertions(+)
>
> diff --git a/src/mesa/main/texcompress.c b/src/mesa/main/texcompress.c
> index e71d0c4..47ad306 100644
> --- a/src/mesa/main/texcompress.c
> +++ b/src/mesa/main/texcompress.c
> @@ -263,6 +263,43 @@ _mesa_get_compressed_formats(struct gl_context *ctx, GLint *formats)
>         else {
>            n += 3;
>         }
> +
> +      /* The ES and desktop GL specs diverge here.
> +       *
> +       * In desktop OpenGL, the driver can perform online compression of
> +       * uncompressed texture data.  GL_NUM_COMPRESSED_TEXTURE_FORMATS and
> +       * GL_COMPRESSED_TEXTURE_FORMATS give the application a list of
> +       * formats that it could ask the driver to compress with some
> +       * expectation of quality.  The GL_ARB_texture_compression spec
> +       * calls this "suitable for general-purpose usage."  As noted
> +       * above, this means GL_COMPRESSED_RGBA_S3TC_DXT1_EXT is not
> +       * included in the list.
> +       *
> +       * In OpenGL ES, the driver never performs compression.
> +       * GL_NUM_COMPRESSED_TEXTURE_FORMATS and
> +       * GL_COMPRESSED_TEXTURE_FORMATS give the application a list of
> +       * formats that the driver can receive from the application.  It
> +       * is the *complete* list of formats.  The
> +       * GL_EXT_texture_compression_s3tc spec says:
> +       *
> +       *     "New State for OpenGL ES 2.0.25 and 3.0.2 Specifications
> +       *
> +       *         The queries for NUM_COMPRESSED_TEXTURE_FORMATS and
> +       *         COMPRESSED_TEXTURE_FORMATS include
> +       *         COMPRESSED_RGB_S3TC_DXT1_EXT,
> +       *         COMPRESSED_RGBA_S3TC_DXT1_EXT,
> +       *         COMPRESSED_RGBA_S3TC_DXT3_EXT, and
> +       *         COMPRESSED_RGBA_S3TC_DXT5_EXT."
> +       *
> +       * Note that the addition is only to the OpenGL ES specification!
> +       */
> +      if (_mesa_is_gles(ctx)) {
> +         if (formats) {
> +            formats[n++] = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
> +         } else {
> +            n += 1;
> +         }
> +      }
>      }
>
>      /* The GL_OES_compressed_ETC1_RGB8_texture spec says:
>

Reviewed-by: Brian Paul <brianp at vmware.com>




More information about the mesa-dev mailing list