[Mesa-dev] [PATCH] mesa: Add COMPRESSED_RGBA_S3TC_DXT1_EXT to COMPRESSED_TEXTURE_FORMATS for GLES
Marek Olšák
maraeo at gmail.com
Wed Jan 15 02:31:26 PST 2014
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Marek
On Tue, Jan 14, 2014 at 11:19 PM, Ian Romanick <idr at freedesktop.org> 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:
> --
> 1.8.1.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list