From 2ef9df660c0ee06aa0ea13663d0706cc03fecbb7 Mon Sep 17 00:00:00 2001 From: Brian Date: Tue, 12 Feb 2008 16:56:18 -0700 Subject: [PATCH] Fix broken test. 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 | 57 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/progs/tests/arbnpot.c b/progs/tests/arbnpot.c index 8107717..05ba85d 100644 --- a/progs/tests/arbnpot.c +++ b/progs/tests/arbnpot.c @@ -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); -- 2.7.4