[Piglit] [PATCH 3/3] copyteximage: verify that GL1.0 legacy formats are rejected

Erik Faye-Lund kusmabite at gmail.com
Mon Aug 24 13:38:29 PDT 2015


The OpenGL 1.0 legacy formats 1, 2, 3 and 4 are not supposed to
be supported for glCopyTexImage. So let's verify that they aren't
accepted.

Signed-off-by: Erik Faye-Lund <kusmabite at gmail.com>
---
 tests/texturing/copyteximage.c | 51 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/tests/texturing/copyteximage.c b/tests/texturing/copyteximage.c
index e7e79c7..52a7254 100644
--- a/tests/texturing/copyteximage.c
+++ b/tests/texturing/copyteximage.c
@@ -575,6 +575,7 @@ create_texture(GLenum target)
 enum piglit_result
 piglit_display(void)
 {
+	GLint format;
 	GLuint tex;
 	GLboolean pass = GL_TRUE;
 	const GLfloat *expected;
@@ -614,6 +615,56 @@ piglit_display(void)
 			}
 		}
 
+		/* Test that internalformats 1, 2, 3 and 4 are not accepted
+		 * as OpenGL 1.0 backwards-compatible aliases.
+		 *
+		 * The OpenGL 1.1 spec, section 3.8 ('Texturing') says the
+		 * the following about glCopyTexImage2D (and similar for
+		 * glCopyTexImage1D):
+		 *
+		 * Parameters level, internalformat, and border are specified
+		 * using the same values, with the same meanings, as the
+		 * equivalent arguments of TexImage2D, except that
+		 * internalformat may not be specified as 1, 2, 3, or 4.
+		 */
+		for (format = 1; format <= 4; ++format) {
+			switch (target[j].target) {
+			case GL_TEXTURE_1D:
+			case GL_TEXTURE_1D_ARRAY:
+				glCopyTexImage1D(target[j].target, 0,
+						 format,
+						 0, 0, IMAGE_SIZE, 0);
+				pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass;
+				break;
+
+			case GL_TEXTURE_2D:
+			case GL_TEXTURE_2D_ARRAY:
+			case GL_TEXTURE_RECTANGLE:
+				glCopyTexImage2D(target[j].target, 0, format,
+						 0, 0, IMAGE_SIZE, IMAGE_SIZE,
+						 0);
+				pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass;
+				break;
+
+			case GL_TEXTURE_CUBE_MAP:
+				for (i = 0; i < 6; i++) {
+					glCopyTexImage2D(cube_face_targets[i],
+							 0, format, 0, 0,
+							 IMAGE_SIZE,
+							 IMAGE_SIZE, 0);
+					pass = piglit_check_gl_error(GL_INVALID_ENUM) && pass;
+				}
+				break;
+
+			case GL_TEXTURE_3D:
+				/* There is no glCopyTexImage3D, and
+				 * glCopyTexSubImage3D does not take an
+				 * internalformat argument
+                                 */
+				continue;
+			}
+		}
+
 		glDeleteTextures(1, &tex);
 	}
 	if (!piglit_automatic)
-- 
2.1.4



More information about the Piglit mailing list