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 <[email protected]>
---
 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

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to