mesa: check that internalformat of CopyTexImage*D is not 1, 2, 3, 4
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Thu, 7 Jan 2016 20:27:52 +0000 (15:27 -0500)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Fri, 8 Jan 2016 15:58:27 +0000 (10:58 -0500)
The piglit copyteximage check has recently been augmented to test this, but
apparently it hasn't been fixed in Mesa so far.

This language also already appears in the OpenGL 2.1 spec (Ian).

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/main/teximage.c

index 73b3318e9483d562a420587fb2fecc4ae0c7c027..50141be86937263b902a0b79af5130f72ec72429 100644 (file)
@@ -2247,6 +2247,22 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions,
                      _mesa_enum_to_string(internalFormat));
          return GL_TRUE;
       }
+   } else {
+      /*
+       * Section 8.6 (Alternate Texture Image Specification Commands) of the
+       * OpenGL 4.5 (Compatibility Profile) spec says:
+       *
+       *     "Parameters level, internalformat, and border are specified using
+       *     the same values, with the same meanings, as the corresponding
+       *     arguments of TexImage2D, except that internalformat may not be
+       *     specified as 1, 2, 3, or 4."
+       */
+      if (internalFormat >= 1 && internalFormat <= 4) {
+         _mesa_error(ctx, GL_INVALID_ENUM,
+                     "glCopyTexImage%dD(internalFormat=%d)", dimensions,
+                     internalFormat);
+         return GL_TRUE;
+      }
    }
 
    baseFormat = _mesa_base_tex_format(ctx, internalFormat);