mesa/main: check cube-completeness in common code
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Thu, 22 Nov 2018 16:40:47 +0000 (17:40 +0100)
committerErik Faye-Lund <erik.faye-lund@collabora.com>
Mon, 26 Nov 2018 11:29:54 +0000 (12:29 +0100)
This check is the only part of dimensions_error_check that isn't about
error-checking the offset and size arguments of
glGet[Compressed]TextureSubImage(), so it doesn't really belong in here.

This doesn't make a difference right now, apart for changing the
presedence of this error. But it will make a difference  for the next
patch, where we no longer call this method from the non-sub tex-image
getters.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-by: Juan A. Suarez <jasuarez@igalia.com>
src/mesa/main/texgetimage.c

index cf316a865a9b82b9651af9fefae66743c534fc09..190f53d62fec59e5f0ea7d6c8ad480bd7ceb134a 100644 (file)
@@ -981,21 +981,6 @@ dimensions_error_check(struct gl_context *ctx,
                      "%s(zoffset + depth = %d)", caller, zoffset + depth);
          return true;
       }
-      /* According to OpenGL 4.6 spec, section 8.11.4 ("Texture Image Queries"):
-       *
-       *   "An INVALID_OPERATION error is generated by GetTextureImage if the
-       *   effective target is TEXTURE_CUBE_MAP or TEXTURE_CUBE_MAP_ARRAY ,
-       *   and the texture object is not cube complete or cube array complete,
-       *   respectively."
-       *
-       * This applies also to GetTextureSubImage, GetCompressedTexImage,
-       * GetCompressedTextureImage, and GetnCompressedTexImage.
-       */
-      if (!_mesa_cube_complete(texObj)) {
-         _mesa_error(ctx, GL_INVALID_OPERATION,
-                     "%s(cube incomplete)", caller);
-         return true;
-      }
       break;
    default:
       ; /* nothing */
@@ -1242,6 +1227,22 @@ common_error_check(struct gl_context *ctx,
       return true;
    }
 
+   /* According to OpenGL 4.6 spec, section 8.11.4 ("Texture Image Queries"):
+    *
+    *   "An INVALID_OPERATION error is generated by GetTextureImage if the
+    *   effective target is TEXTURE_CUBE_MAP or TEXTURE_CUBE_MAP_ARRAY ,
+    *   and the texture object is not cube complete or cube array complete,
+    *   respectively."
+    *
+    * This applies also to GetTextureSubImage, GetCompressedTexImage,
+    * GetCompressedTextureImage, and GetnCompressedTexImage.
+    */
+   if (target == GL_TEXTURE_CUBE_MAP && !_mesa_cube_complete(texObj)) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "%s(cube incomplete)", caller);
+      return true;
+   }
+
    return false;
 }