Mesa (master): mesa: recover target_check before get_current_tex_objects

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Aug 21 20:42:13 UTC 2019


Module: Mesa
Branch: master
Commit: 74a7e3ed3b297f441b406ff62ef9ba504ba3b06c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=74a7e3ed3b297f441b406ff62ef9ba504ba3b06c

Author: Jose Maria Casanova Crespo <jmcasanova at igalia.com>
Date:   Wed Aug 21 13:16:16 2019 +0100

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 <gert.wollny at collabora.com>

---

 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 &&




More information about the mesa-commit mailing list