mesa: Fix error in target validation of glCompressedTex(ture)SubImage3D() calls
authorEduardo Lima Mitev <elima@igalia.com>
Thu, 23 Jul 2015 14:25:21 +0000 (16:25 +0200)
committerEduardo Lima Mitev <elima@igalia.com>
Thu, 23 Jul 2015 14:31:14 +0000 (16:31 +0200)
Basically, two different target error checks are chained consecutively, and the
second one is executed regardless the result of the first one. This produces an
incorrect error if the first check fails but is overrided by the second.

This patch conditions the execution of the second check to a successful pass of
the first one.

Fixes 1 dEQP test:
* dEQP-GLES3.functional.negative_api.texture.compressedtexsubimage3d

Reviewed-by: Laura Ekstrand <laura@jlekstrand.net>
src/mesa/main/teximage.c

index 3b309abbe14c4a8736fb3c353c61fb986ca4ef90..cd451138b1ccdb0e94dae06302cd03c595c72d69 100644 (file)
@@ -4586,7 +4586,8 @@ compressed_subtexture_target_check(struct gl_context *ctx, GLenum target,
        * are valid here, which they are not, but of course not mentioned by
        * core spec.
        */
-      if (target != GL_TEXTURE_2D_ARRAY && target != GL_TEXTURE_CUBE_MAP_ARRAY) {
+      if (targetOK && target != GL_TEXTURE_2D_ARRAY &&
+          target != GL_TEXTURE_CUBE_MAP_ARRAY) {
          bool invalidformat;
          switch (format) {
             /* These came from _mesa_is_compressed_format in glformats.c. */