--- tests/all.py | 1 - tests/glean/CMakeLists.gl.txt | 1 - tests/glean/ttexgen.cpp | 376 ------------------------------------------ tests/glean/ttexgen.h | 67 -------- 4 files changed, 445 deletions(-) delete mode 100644 tests/glean/ttexgen.cpp delete mode 100644 tests/glean/ttexgen.h
diff --git a/tests/all.py b/tests/all.py index c15e63d..5c5e5ab 100644 --- a/tests/all.py +++ b/tests/all.py @@ -383,7 +383,6 @@ with profile.test_list.group_manager(GleanTest, 'glean') as g: # the equivalent functionality is covered by other tests g('shaderAPI') g('texCube') - g('texgen') g('texture_srgb') g('texUnits') g('vertArrayBGRA') diff --git a/tests/glean/CMakeLists.gl.txt b/tests/glean/CMakeLists.gl.txt index 569faaf..16a0d46 100644 --- a/tests/glean/CMakeLists.gl.txt +++ b/tests/glean/CMakeLists.gl.txt @@ -37,7 +37,6 @@ piglit_add_executable (glean tpixelformats.cpp tshaderapi.cpp ttexcube.cpp - ttexgen.cpp ttexture_srgb.cpp ttexunits.cpp tvertarraybgra.cpp diff --git a/tests/glean/ttexgen.cpp b/tests/glean/ttexgen.cpp deleted file mode 100644 index f44cb9a..0000000 --- a/tests/glean/ttexgen.cpp +++ /dev/null @@ -1,376 +0,0 @@ -// BEGIN_COPYRIGHT -*- glean -*- -// -// Copyright (C) 1999 Allen Akin All Rights Reserved. -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the -// Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -// KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ALLEN AKIN BE -// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -// AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF -// OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. -// -// END_COPYRIGHT - - -// ttexgen.cpp: Basic test of GL texture coordinate generation. -// This test does a basic test of the glTexGen functions, including -// object_linear, eye_linear, and sphere_map. We use the Sphere3D with -// a GeomRenderer to draw a sphere, and map a check texture onto it. We -// use an ortho projection to keep it simple. The result should be a 1:1 -// mapping of the check texture for all three modes (sphere map maps 1:1 -// because mapping it onto a sphere inverts the spheremap math). -// -// Note that accuracy issues might cause this test to fail if the -// texcoords near the center are a little warped; I've specifically tried -// to keep the matrices as "pure" as possible (no rotations) to -// keep the numerical precision high. So far it seems to work fine. -// Introducing a rotation by 90 degrees about the x axis resulted, -// on one driver, in a warping at the center of the sphere which caused -// the test to fail. -// -// For the second test of the three, we offset the texture by 0.5, -// so that each test's rendering is visually distinct from the -// previous. -// -// To test for pass/fail we examine the color buffer for red and blue, -// (the check colors) in the appropriate places. -// -// Author: Brian Sharp (br...@maniacal.org) December 2000 - -#include "ttexgen.h" -#include <stdio.h> -#include "geomutil.h" - - -const GLuint viewSize=50; - - -namespace GLEAN { - -void -TexgenTest::FailMessage(BasicResult &r, const std::string& texgenMode, - GeomRenderer::DrawMethod method, bool arraysCompiled, - int retainedMode, - const std::string& colorMismatch) const { - env->log << name << ": FAIL " - << r.config->conciseDescription() << '\n'; - env->log << "\t" << "during mode " << texgenMode << ", "; - switch(method) - { - case GeomRenderer::GLVERTEX_MODE: env->log << "glVertex-style rendering, "; break; - case GeomRenderer::GLARRAYELEMENT_MODE: env->log << "glArrayElement-style rendering, "; break; - case GeomRenderer::GLDRAWELEMENTS_MODE: env->log << "glDrawElements-style rendering, "; break; - case GeomRenderer::GLDRAWARRAYS_MODE: env->log << "glDrawArrays-style rendering, "; break; - } - if (arraysCompiled) env->log << "arrays locked, "; - else env->log << "arrays not locked, "; - - if (retainedMode) env->log << "built into a display list, "; - else env->log << "called immediately (not display listed), "; - - env->log << colorMismatch << std::endl; -} - -bool -TexgenTest::compareColors(GLfloat* color0, GLfloat* color1, std::string& failureInfo) const { - - // Compare the colors; fail and report why if they don't match. - if (color0[0] != color1[0] || color0[1] != color1[1] || color0[2] != color1[2]) - { - // Assemble the error message into a C-string, then hand it back in the string. - char failureOut[1024]; - sprintf(failureOut, "expected [%f,%f,%f], read back [%f,%f,%f]", - color0[0], color0[1], color0[2], - color1[0], color1[1], color1[2]); - - failureInfo = std::string(failureOut); - return false; - } - - return true; -} - -bool -TexgenTest::verifyCheckers(GLfloat* pixels, GLfloat* upperLeftColor, GLfloat* upperRightColor, std::string& failureInfo) const { - - // My loop control variable, since gcc and MSVC do things differently. - GLint samp; - - // It's a viewSize x viewSize pixel block; since we drew a sphere that doesn't quite touch the - // edges, we need to be careful not to sample from what should be background. - // These pairs are hand-picked coordinates on the image that fall on the bottom-left quadrant - // of the sphere. - // XXX FIX ME: these sample coordinates assume that viewSize == 50. - GLuint samples[6][2] = {{13,13}, {4,22}, {22,4}, {20,20}, {20,10}, {10,20}}; - - // Run through those sample points in the bottom-left corner and make sure they're all the right color. - for (samp=0; samp<6; samp++) - { - GLuint sampleOffset = (samples[samp][0] + (viewSize*samples[samp][1]))*3; - if (!compareColors(upperRightColor, pixels + sampleOffset, failureInfo)) - { - return false; - } - } - - // Run through those sample points in the bottom-right corner and make sure they're all the right color. - // Note the "viewSize - samples[samp][0]" to flip it to the bottom-right quadrant. - for (samp=0; samp<6; samp++) - { - GLuint sampleOffset = ((viewSize - samples[samp][0]) + (viewSize*samples[samp][1]))*3; - if (!compareColors(upperLeftColor, pixels + sampleOffset, failureInfo)) - { - return false; - } - } - - // Run through those sample points in the upper-right corner and make sure they're all the right color. - for (samp=0; samp<6; samp++) - { - GLuint sampleOffset = ((viewSize - samples[samp][0]) + (viewSize*(viewSize - samples[samp][1])))*3; - if (!compareColors(upperRightColor, pixels + sampleOffset, failureInfo)) - { - return false; - } - } - - // Run through those sample points in the upper-left corner and make sure they're all the right color. - for (samp=0; samp<6; samp++) - { - GLuint sampleOffset = (samples[samp][0] + (viewSize*(viewSize - samples[samp][1])))*3; - if (!compareColors(upperLeftColor, pixels + sampleOffset, failureInfo)) - { - return false; - } - } - - return true; -} - - -/////////////////////////////////////////////////////////////////////////////// -// runOne: Run a single test case -/////////////////////////////////////////////////////////////////////////////// -void -TexgenTest::runOne(BasicResult& r, Window&) { - - // Temporary buffer to store pixels we've read back for verification. - GLfloat pixels[50*50*3]; - - // Colors for matching against when we readback pixels. - GLfloat matchBlue[3] = {0,0,1}; - GLfloat matchRed[3] = {1,0,0}; - - // A sphere to draw. - Sphere3D theSphere(9.9, 32, 16); - - // A GeomRenderer to draw it with. - GeomRenderer sphereRenderer; - sphereRenderer.setDrawMethod(GeomRenderer::GLVERTEX_MODE); - sphereRenderer.setParameterBits(GeomRenderer::NORMAL_BIT); - sphereRenderer.setVArrayIndices(theSphere.getNumIndices(),GL_UNSIGNED_INT,theSphere.getIndices()); - sphereRenderer.setVertexPointer(theSphere.getNumVertices(), 3, GL_FLOAT, 0, theSphere.getVertices()); - sphereRenderer.setNormalPointer(GL_FLOAT, 0, theSphere.getNormals()); - - // draw the sphere in a 50x50 pixel window for some precision. - glViewport(0, 0, 50, 50); - - // Basic GL setup. - glDisable(GL_DITHER); - glEnable(GL_CULL_FACE); - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glColor3f(1,1,1); - - // Setup the projection. - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-10,10,-10,10,-10,10); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - // Set up our texture. - glEnable(GL_TEXTURE_2D); - GLuint checkerTextureHandle; - glGenTextures(1, &checkerTextureHandle); - glBindTexture(GL_TEXTURE_2D, checkerTextureHandle); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - - // Make a little checker texture. - unsigned char redBlueCheck[256*256*3]; - for (int x=0; x<256; x++) - { - for (int y=0; y<256; y++) - { - bool xPastHalf = x >= 128; - bool yPastHalf = y >= 128; - - redBlueCheck[(x+(256*y))*3 + 0] = ((xPastHalf && yPastHalf) || (!xPastHalf && !yPastHalf)) ? 255 : 0; - redBlueCheck[(x+(256*y))*3 + 1] = 0; - redBlueCheck[(x+(256*y))*3 + 2] = ((xPastHalf && !yPastHalf) || (!xPastHalf && yPastHalf)) ? 255 : 0; - } - } - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 256, 256, 0, GL_RGB, - GL_UNSIGNED_BYTE, redBlueCheck); - - // Setup our arrays of configuration info; we loop over the rendering pass a number of times, - // using a different GL primitive path each time. - GeomRenderer::DrawMethod drawMethods[] = {GeomRenderer::GLVERTEX_MODE, GeomRenderer::GLARRAYELEMENT_MODE, - GeomRenderer::GLDRAWELEMENTS_MODE, GeomRenderer::GLARRAYELEMENT_MODE, - GeomRenderer::GLDRAWELEMENTS_MODE}; - - bool arraysCompiled[] = {false, false, false, true, true}; - - // Iterate once for all immediate mode styles, then once for retained mode styles. - for (int retainedMode=0; retainedMode<2; retainedMode++) - { - for (int testIteration=0; testIteration<5; testIteration++) - { - sphereRenderer.setDrawMethod(drawMethods[testIteration]); - if (!sphereRenderer.setArraysCompiled(arraysCompiled[testIteration])) - { - // We don't have the extension... not sure what we should do. - // May as well just keep going, it's no big deal (it should still - // yield correct results, of course, it's just redundant). - } - - // GL_SPHERE_MAP: with spheremap, the UL corner is blue - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - renderSphere(retainedMode, sphereRenderer); - glReadPixels(0,0,50,50, GL_RGB, GL_FLOAT, pixels); - - // Validate it. - std::string sphereMapResult; - if (!verifyCheckers(pixels, matchBlue, matchRed, sphereMapResult)) - { - FailMessage(r, std::string("GL_SPHERE_MAP"), drawMethods[testIteration], - arraysCompiled[testIteration], retainedMode, sphereMapResult); - r.pass = false; - glDeleteTextures(1, &checkerTextureHandle); - return; - } - - // GL_OBJECT_LINEAR: with object linear and the below planes, the UL corner is red. - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - float sObjPlane[4] = {0,0.05,0,1.5}; // We flip the checker by setting W to 1.5 (phases by half a period) - float tObjPlane[4] = {0.05,0,0,1}; - glTexGenfv(GL_S, GL_OBJECT_PLANE, sObjPlane); - glTexGenfv(GL_T, GL_OBJECT_PLANE, tObjPlane); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - renderSphere(retainedMode, sphereRenderer); - glReadPixels(0,0,50,50, GL_RGB, GL_FLOAT, pixels); - - // Validate it. - std::string objectLinearResult; - if (!verifyCheckers(pixels, matchRed, matchBlue, objectLinearResult)) - { - FailMessage(r, std::string("GL_OBJECT_LINEAR"), drawMethods[testIteration], - arraysCompiled[testIteration], retainedMode, objectLinearResult); - r.pass = false; - glDeleteTextures(1, &checkerTextureHandle); - return; - } - - // GL_EYE_LINEAR: with eye linear and the below planes, the UL corner is blue. - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); - float sEyePlane[4] = {0,0.05,0,1}; - float tEyePlane[4] = {0.05,0,0,1}; - glTexGenfv(GL_S, GL_EYE_PLANE, sEyePlane); - glTexGenfv(GL_T, GL_EYE_PLANE, tEyePlane); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - renderSphere(retainedMode, sphereRenderer); - glReadPixels(0,0,50,50, GL_RGB, GL_FLOAT, pixels); - - // Validate it. - std::string eyeLinearResult; - if (!verifyCheckers(pixels, matchBlue, matchRed, eyeLinearResult)) - { - FailMessage(r, std::string("GL_EYE_LINEAR"), drawMethods[testIteration], - arraysCompiled[testIteration], retainedMode, eyeLinearResult); - r.pass = false; - glDeleteTextures(1, &checkerTextureHandle); - return; - } - } - } - - // success - r.pass = true; -} // TexgenTest::runOne - -/////////////////////////////////////////////////////////////////////////////// -// logOne: Log a single test case -/////////////////////////////////////////////////////////////////////////////// -void -TexgenTest::logOne(BasicResult& r) { - if (r.pass) { - logPassFail(r); - logConcise(r); - } -} // TexgenTest::logOne - -void -TexgenTest::renderSphere(int retainedMode, GeomRenderer& sphereRenderer) -{ - bool result; - if (retainedMode) - { - GLint displayList; - result = sphereRenderer.generateDisplayList(GL_TRIANGLES, displayList); - assert(result); - glCallList(displayList); - glDeleteLists(displayList, 1); - } - else - { - result = sphereRenderer.renderPrimitives(GL_TRIANGLES); - assert(result); - } -} // TexgenTest::renderSphere - - -/////////////////////////////////////////////////////////////////////////////// -// The test object itself: -/////////////////////////////////////////////////////////////////////////////// -TexgenTest texgenTest("texgen", "window, rgb", - - "This test verifies that the three basic OpenGL texture coordinate\n" - "modes: object_linear, eye_linear, and sphere_map, work for a simple\n" - "case.\n"); - - -} // namespace GLEAN - - - - - diff --git a/tests/glean/ttexgen.h b/tests/glean/ttexgen.h deleted file mode 100644 index 2a214b0..0000000 --- a/tests/glean/ttexgen.h +++ /dev/null @@ -1,67 +0,0 @@ -// BEGIN_COPYRIGHT -*- glean -*- -// -// Copyright (C) 1999 Allen Akin All Rights Reserved. -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the -// Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -// KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ALLEN AKIN BE -// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -// AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF -// OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. -// -// END_COPYRIGHT - - -// ttexgen.h: Basic test of GL texture coordinate generation. -// Author: Brian Sharp (br...@maniacal.org) December 2000 - - -#ifndef __ttexgen_h__ -#define __ttexgen_h__ - -#include "tbasic.h" -#include "geomrend.h" - -namespace GLEAN { - -class TexgenTest: public BasicTest { -public: - TexgenTest(const char* testName, const char* filter, - const char* description): - BasicTest(testName, filter, description) { - } - virtual void runOne(BasicResult& r, Window& w); - virtual void logOne(BasicResult& r); - -private: - void FailMessage(BasicResult &r, const std::string& texgenMode, - GeomRenderer::DrawMethod, - bool arraysCompiled, int retainedMode, - const std::string& colorMismatch) const; - void renderSphere(int retainedMode, GeomRenderer& sphereRenderer); - bool compareColors(GLfloat* color0, GLfloat* color1, - std::string& failureInfo) const; - bool verifyCheckers(GLfloat* pixels, GLfloat* upperLeftColor, - GLfloat* upperRightColor, - std::string& failureInfo) const; - -}; // class TexgenTest - -} // namespace GLEAN - -#endif // __ttexgen_h__ -- 2.7.4 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit