Fix broken test.
authorBrian <brian.paul@tungstengraphics.com>
Tue, 12 Feb 2008 23:56:18 +0000 (16:56 -0700)
committerBrian <brian.paul@tungstengraphics.com>
Tue, 12 Feb 2008 23:56:18 +0000 (16:56 -0700)
As-is, if the texture was too large for the target, an assertion would fail.
Now check proxy texture first and if it works, then test non-proxy target.

progs/tests/arbnpot.c

index 8107717e271ac173fb91fc6d7dae28aeb852f3f2..05ba85dad9e2ef7909ed659ab97e02cc7ce63436 100644 (file)
@@ -113,44 +113,67 @@ static void Init( void )
    minDim = imgWidth < imgHeight ? imgWidth : imgHeight;
 
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-   glTexImage1D(GL_TEXTURE_1D, 0, GL_RGB, imgWidth, 0,
-                imgFormat, GL_UNSIGNED_BYTE, image);
-   assert(glGetError() == GL_NO_ERROR);
 
+   /*
+    * 1D Texture.  Test proxy first, if that works, test non-proxy target.
+    */
    glTexImage1D(GL_PROXY_TEXTURE_1D, 0, GL_RGB, imgWidth, 0,
                 imgFormat, GL_UNSIGNED_BYTE, image);
    glGetTexLevelParameteriv(GL_PROXY_TEXTURE_1D, 0, GL_TEXTURE_WIDTH, &w);
-   assert(w == imgWidth);
+   assert(w == imgWidth || w == 0);
 
-   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, imgWidth, imgHeight, 0,
-                imgFormat, GL_UNSIGNED_BYTE, image);
-   assert(glGetError() == GL_NO_ERROR);
+   if (w) {
+      glTexImage1D(GL_TEXTURE_1D, 0, GL_RGB, imgWidth, 0,
+                   imgFormat, GL_UNSIGNED_BYTE, image);
+      assert(glGetError() == GL_NO_ERROR);
+   }
 
+
+   /*
+    * 2D Texture
+    */
    glTexImage2D(GL_PROXY_TEXTURE_2D, 0, GL_RGB, imgWidth, imgHeight, 0,
                 imgFormat, GL_UNSIGNED_BYTE, image);
    glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w);
-   assert(w == imgWidth);
+   assert(w == imgWidth || w == 0);
 
-   glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB, imgWidth, imgHeight, 1, 0,
-                imgFormat, GL_UNSIGNED_BYTE, image);
-   assert(glGetError() == GL_NO_ERROR);
+   if (w) {
+      glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, imgWidth, imgHeight, 0,
+                   imgFormat, GL_UNSIGNED_BYTE, image);
+      assert(glGetError() == GL_NO_ERROR);
+   }
 
+
+   /*
+    * 3D Texture
+    */
    glTexImage3D(GL_PROXY_TEXTURE_3D, 0, GL_RGB, imgWidth, imgHeight, 1, 0,
                 imgFormat, GL_UNSIGNED_BYTE, image);
    glGetTexLevelParameteriv(GL_PROXY_TEXTURE_3D, 0, GL_TEXTURE_WIDTH, &w);
-   assert(w == imgWidth);
+   assert(w == imgWidth || w == 0);
+
+   if (w) {
+      glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB, imgWidth, imgHeight, 1, 0,
+                   imgFormat, GL_UNSIGNED_BYTE, image);
+      assert(glGetError() == GL_NO_ERROR);
+   }
 
-   glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB,
-                minDim, minDim, 0,
-                imgFormat, GL_UNSIGNED_BYTE, image);
-   assert(glGetError() == GL_NO_ERROR);
 
+   /*
+    * Cube Texture
+    */
    glTexImage2D(GL_PROXY_TEXTURE_CUBE_MAP, 0, GL_RGB,
                 minDim, minDim, 0,
                 imgFormat, GL_UNSIGNED_BYTE, image);
    glGetTexLevelParameteriv(GL_PROXY_TEXTURE_CUBE_MAP, 0, GL_TEXTURE_WIDTH, &w);
-   assert(w == minDim);
+   assert(w == minDim || w == 0);
 
+   if (w) {
+      glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB,
+                   minDim, minDim, 0,
+                   imgFormat, GL_UNSIGNED_BYTE, image);
+      assert(glGetError() == GL_NO_ERROR);
+   }
 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);