From 74a7e3ed3b297f441b406ff62ef9ba504ba3b06c Mon Sep 17 00:00:00 2001 From: Jose Maria Casanova Crespo Date: Wed, 21 Aug 2019 13:16:16 +0100 Subject: [PATCH] mesa: recover target_check before get_current_tex_objects At compressed_tex_sub_image we only can obtain the tex_object after compressed_subtexture_target_check is validated for TEX_MODE_CURRENT. So if the target is wrong the error is raised to the user. This completes the fix for the regression introduced on "mesa: refactor compressed_tex_sub_image function" of the pending failing tests: dEQP-GLES3.functional.negative_api.texture.compressedtexsubimage3d dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage3d v2: Fix warning that texObj might be used uninitialized (Gert Wollny) Fixes: 7df233d68dc ("mesa: refactor compressed_tex_sub_image function") Reviewed-By: Gert Wollny --- src/mesa/main/teximage.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index e940ecd7323..f90765f40fa 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -5588,7 +5588,7 @@ compressed_tex_sub_image(unsigned dim, GLenum target, GLuint textureOrIndex, const GLvoid *data, enum tex_mode mode, const char *caller) { - struct gl_texture_object *texObj; + struct gl_texture_object *texObj = NULL; struct gl_texture_image *texImage; bool no_error = false; GET_CURRENT_CONTEXT(ctx); @@ -5622,14 +5622,9 @@ compressed_tex_sub_image(unsigned dim, GLenum target, GLuint textureOrIndex, case TEX_MODE_CURRENT_ERROR: default: assert(textureOrIndex == 0); - texObj = _mesa_get_current_tex_object(ctx, target); break; } - if (!texObj) - return; - - if (!no_error && compressed_subtexture_target_check(ctx, target, dim, format, mode == TEX_MODE_DSA_ERROR, @@ -5637,7 +5632,12 @@ compressed_tex_sub_image(unsigned dim, GLenum target, GLuint textureOrIndex, return; } - if (!no_error && !texObj) + if (mode == TEX_MODE_CURRENT_NO_ERROR || + mode == TEX_MODE_CURRENT_ERROR) { + texObj = _mesa_get_current_tex_object(ctx, target); + } + + if (!texObj) return; if (!no_error && -- 2.30.2