From 586f84ce01f28fa1c4c71abd7f0aa16ee66adee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Mon, 10 May 2021 10:37:58 +0300 Subject: [PATCH] mesa: fix error set for glCompressedTexSubImage calls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desktop and ES expect a different error code here when dealing with generic compressed format tokens. This fixes failures with upcoming new tests for compressed texture related API calls. Signed-off-by: Tapani Pälli Reviewed-by: Matt Turner Part-of: --- src/mesa/main/teximage.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 24275c7d947..e97753ef459 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -5404,9 +5404,26 @@ compressed_subtexture_error_check(struct gl_context *ctx, GLint dims, struct gl_texture_image *texImage; GLint expectedSize; + GLenum is_generic_compressed_token = + _mesa_generic_compressed_format_to_uncompressed_format(format) != + format; + + /* OpenGL 4.6 and OpenGL ES 3.2 spec: + * + * "An INVALID_OPERATION error is generated if format does not match the + * internal format of the texture image being modified, since these commands do + * not provide for image format conversion." + * + * Desktop spec has an additional rule for GL_INVALID_ENUM: + * + * "An INVALID_ENUM error is generated if format is one of the generic + * compressed internal formats." + */ /* this will catch any invalid compressed format token */ if (!_mesa_is_compressed_format(ctx, format)) { - _mesa_error(ctx, GL_INVALID_ENUM, "%s(format)", callerName); + GLenum error = _mesa_is_desktop_gl(ctx) && is_generic_compressed_token ? + GL_INVALID_ENUM : GL_INVALID_OPERATION; + _mesa_error(ctx, error, "%s(format)", callerName); return GL_TRUE; }