mesa/main: do not allow s3tc enums on gles1

There's no extension enabling S3TC formats on OpenGL ES 1.x, so we
shouldn't allow these even if the driver can support it. So let's check
for EXT_texture_compression_s3tc instead of ANGLE_texture_compression_dxt,
which is supported on all other OpenGL variations.

We also need to use _mesa_has_EXT_texture_compression_s3tc() instead of
checking the driver cap directly, otherwise we end up enabling this on
OpenGL ES 1.x, as the API isn't checked.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Erik Faye-Lund 2018-11-15 16:15:41 +01:00
parent d70cfb322a
commit 27ca87ccca

View file

@ -1371,10 +1371,7 @@ _mesa_is_compressed_format(const struct gl_context *ctx, GLenum format)
switch (_mesa_get_format_layout(m_format)) {
case MESA_FORMAT_LAYOUT_S3TC:
if (_mesa_get_format_color_encoding(m_format) == GL_LINEAR) {
/* Assume that the ANGLE flag will always be set if the
* EXT flag is set.
*/
return ctx->Extensions.ANGLE_texture_compression_dxt;
return _mesa_has_EXT_texture_compression_s3tc(ctx);
} else {
return _mesa_has_EXT_texture_sRGB(ctx) &&
_mesa_has_EXT_texture_compression_s3tc(ctx);
@ -2802,7 +2799,7 @@ _mesa_gles_error_check_format_and_type(const struct gl_context *ctx,
/* The GLES variant of EXT_texture_compression_s3tc is very vague and
* doesn't list valid types. Just do exactly what the spec says.
*/
if (ctx->Extensions.EXT_texture_compression_s3tc &&
if (_mesa_has_EXT_texture_compression_s3tc(ctx) &&
(internalFormat == GL_COMPRESSED_RGB_S3TC_DXT1_EXT ||
internalFormat == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT ||
internalFormat == GL_COMPRESSED_RGBA_S3TC_DXT3_EXT ||