--- tests/all.py | 2 +- tests/bugs/CMakeLists.gl.txt | 1 - tests/bugs/point-sprite.c | 151 -------------------------- tests/spec/arb_point_sprite/CMakeLists.gl.txt | 1 + tests/spec/arb_point_sprite/checkerboard.c | 151 ++++++++++++++++++++++++++ 5 files changed, 153 insertions(+), 153 deletions(-) delete mode 100644 tests/bugs/point-sprite.c create mode 100644 tests/spec/arb_point_sprite/checkerboard.c
diff --git a/tests/all.py b/tests/all.py index 8226e4f..6cafc11 100644 --- a/tests/all.py +++ b/tests/all.py @@ -1629,7 +1629,7 @@ with profile.test_list.group_manager( # Group ARB_point_sprite with profile.test_list.group_manager( PiglitGLTest, grouptools.join('spec', 'ARB_point_sprite')) as g: - g(['point-sprite'], run_concurrent=False) + g(['arb_point_sprite-checkerboard'], run_concurrent=False) g(['arb_point_sprite-mipmap']) # Group ARB_tessellation_shader diff --git a/tests/bugs/CMakeLists.gl.txt b/tests/bugs/CMakeLists.gl.txt index 76272c7..4cc651c 100644 --- a/tests/bugs/CMakeLists.gl.txt +++ b/tests/bugs/CMakeLists.gl.txt @@ -10,7 +10,6 @@ link_libraries ( ${OPENGL_gl_LIBRARY} ) -piglit_add_executable (point-sprite point-sprite.c) piglit_add_executable (fdo22540 fdo22540.c) piglit_add_executable (fdo23489 fdo23489.c) piglit_add_executable (fdo23670-depth_test fdo23670-depth_test.c) diff --git a/tests/bugs/point-sprite.c b/tests/bugs/point-sprite.c deleted file mode 100644 index 2382c46..0000000 --- a/tests/bugs/point-sprite.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright © 2009 Intel Corporation - * - * 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 (including the next - * paragraph) 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 - * THE AUTHORS OR COPYRIGHT HOLDERS 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. - */ - -/** - * This test draws a point sprite with a checkerboard texture and tests whether - * the correct colors were drawn using piglit_probe_pixel_rgb. - * - * \author Ben Holmes - */ - -#include "piglit-util-gl.h" - -#define BOX_SIZE 64 -#define TEST_COLS 6 -#define TEST_ROWS 2 - -PIGLIT_GL_TEST_CONFIG_BEGIN - - config.supports_gl_compat_version = 10; - - config.window_width = 1+((BOX_SIZE+1)*TEST_COLS); - config.window_height = 1+((BOX_SIZE+1)*TEST_ROWS); - config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | PIGLIT_GL_VISUAL_RGB; - config.khr_no_error_support = PIGLIT_NO_ERRORS; - -PIGLIT_GL_TEST_CONFIG_END - -static float maxSize = 0.0f; -static GLuint tex; -static const GLfloat black[4] = {0.0, 0.0, 0.0, 1.0}; -static const GLfloat white[4] = {1.0, 1.0, 1.0, 1.0}; - -void -piglit_init(int argc, char **argv) -{ - GLfloat realMaxSize; - - (void) argc; - (void) argv; - - piglit_require_extension("GL_ARB_point_sprite"); - - piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE); - - glEnable(GL_TEXTURE_2D); - glEnable(GL_POINT_SPRITE_ARB); - - glGetFloatv(GL_POINT_SIZE_MAX, &realMaxSize); - maxSize = (realMaxSize > BOX_SIZE) ? BOX_SIZE : realMaxSize; - - glClearColor(0.2, 0.2, 0.2, 1.0); - glColor3f(1.0, 1.0, 1.0); - - tex = piglit_checkerboard_texture(0, 0, 2, 2, 1, 1, black, white); - glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE); - - if (!piglit_automatic) - printf("Maximum point size is %f, using %f\n", - realMaxSize, maxSize); -} - -enum piglit_result -piglit_display(void) -{ - static const GLenum origins[2] = { GL_UPPER_LEFT, GL_LOWER_LEFT }; - const unsigned num_rows = (piglit_get_gl_version() >= 20) ? 2 : 1; - GLboolean pass = GL_TRUE; - unsigned i; - unsigned j; - - glClear(GL_COLOR_BUFFER_BIT); - glBindTexture(GL_TEXTURE_2D, tex); - - for (i = 0; i < num_rows; i++) { - const float y = 1 + (BOX_SIZE / 2) + (i * (BOX_SIZE + 1)); - const float *const upper_left = (origins[i] == GL_UPPER_LEFT) - ? black : white; - const float *const lower_left = (origins[i] == GL_UPPER_LEFT) - ? white : black; - - /* OpenGL version must be at least 2.0 to support modifying - * GL_POINT_SPRITE_COORD_ORIGIN. - */ - if (piglit_get_gl_version() >= 20) - glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, - origins[i]); - - for (j = 0; j < TEST_COLS; j++) { - const float x = 1 + (BOX_SIZE / 2) - + (j * (BOX_SIZE + 1)); - const float size = maxSize / (float) (1 << j); - - /* If the point size is too small, there won't be - * enough pixels drawn for the tests (below). - */ - if (size < 2.0) - continue; - - glPointSize(size - 0.2); - glBegin(GL_POINTS); - glTexCoord2f(1.5, 1.5); - glVertex2f(x, y); - glEnd(); - - if (!piglit_probe_pixel_rgb(x - (size / 4), - y + (size / 4), - upper_left) - || !piglit_probe_pixel_rgb(x - (size / 4), - y - (size / 4), - lower_left) - || !piglit_probe_pixel_rgb(x + (size / 4), - y + (size / 4), - lower_left) - || !piglit_probe_pixel_rgb(x + (size / 4), - y - (size / 4), - upper_left)) { - if (!piglit_automatic) - printf(" size = %.3f, " - "origin = %s left\n", - size, - (origins[i] == GL_UPPER_LEFT) - ? "upper" : "lower"); - pass = GL_FALSE; - } - } - } - - piglit_present_results(); - - return pass ? PIGLIT_PASS : PIGLIT_FAIL; -} diff --git a/tests/spec/arb_point_sprite/CMakeLists.gl.txt b/tests/spec/arb_point_sprite/CMakeLists.gl.txt index 10a39c4..897f41d 100644 --- a/tests/spec/arb_point_sprite/CMakeLists.gl.txt +++ b/tests/spec/arb_point_sprite/CMakeLists.gl.txt @@ -9,6 +9,7 @@ link_libraries ( ${OPENGL_gl_LIBRARY} ) +piglit_add_executable (arb_point_sprite-checkerboard checkerboard.c) piglit_add_executable (arb_point_sprite-mipmap mipmap.c) # vim: ft=cmake: diff --git a/tests/spec/arb_point_sprite/checkerboard.c b/tests/spec/arb_point_sprite/checkerboard.c new file mode 100644 index 0000000..a59e298 --- /dev/null +++ b/tests/spec/arb_point_sprite/checkerboard.c @@ -0,0 +1,151 @@ +/* + * Copyright © 2009 Intel Corporation + * + * 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 (including the next + * paragraph) 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 + * THE AUTHORS OR COPYRIGHT HOLDERS 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. + */ + +/** + * This test draws a point sprite with a checkerboard texture and tests + * whether the correct colors were drawn using piglit_probe_pixel_rgb. + * + * \author Ben Holmes + */ + +#include "piglit-util-gl.h" + +#define BOX_SIZE 64 +#define TEST_COLS 6 +#define TEST_ROWS 2 + +PIGLIT_GL_TEST_CONFIG_BEGIN + + config.supports_gl_compat_version = 10; + + config.window_width = 1+((BOX_SIZE+1)*TEST_COLS); + config.window_height = 1+((BOX_SIZE+1)*TEST_ROWS); + config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | PIGLIT_GL_VISUAL_RGB; + config.khr_no_error_support = PIGLIT_NO_ERRORS; + +PIGLIT_GL_TEST_CONFIG_END + +static float maxSize = 0.0f; +static GLuint tex; +static const GLfloat black[4] = {0.0, 0.0, 0.0, 1.0}; +static const GLfloat white[4] = {1.0, 1.0, 1.0, 1.0}; + +void +piglit_init(int argc, char **argv) +{ + GLfloat realMaxSize; + + (void) argc; + (void) argv; + + piglit_require_extension("GL_ARB_point_sprite"); + + piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE); + + glEnable(GL_TEXTURE_2D); + glEnable(GL_POINT_SPRITE_ARB); + + glGetFloatv(GL_POINT_SIZE_MAX, &realMaxSize); + maxSize = (realMaxSize > BOX_SIZE) ? BOX_SIZE : realMaxSize; + + glClearColor(0.2, 0.2, 0.2, 1.0); + glColor3f(1.0, 1.0, 1.0); + + tex = piglit_checkerboard_texture(0, 0, 2, 2, 1, 1, black, white); + glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE); + + if (!piglit_automatic) + printf("Maximum point size is %f, using %f\n", + realMaxSize, maxSize); +} + +enum piglit_result +piglit_display(void) +{ + static const GLenum origins[2] = { GL_UPPER_LEFT, GL_LOWER_LEFT }; + const unsigned num_rows = (piglit_get_gl_version() >= 20) ? 2 : 1; + GLboolean pass = GL_TRUE; + unsigned i; + unsigned j; + + glClear(GL_COLOR_BUFFER_BIT); + glBindTexture(GL_TEXTURE_2D, tex); + + for (i = 0; i < num_rows; i++) { + const float y = 1 + (BOX_SIZE / 2) + (i * (BOX_SIZE + 1)); + const float *const upper_left = (origins[i] == GL_UPPER_LEFT) + ? black : white; + const float *const lower_left = (origins[i] == GL_UPPER_LEFT) + ? white : black; + + /* OpenGL version must be at least 2.0 to support modifying + * GL_POINT_SPRITE_COORD_ORIGIN. + */ + if (piglit_get_gl_version() >= 20) + glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, + origins[i]); + + for (j = 0; j < TEST_COLS; j++) { + const float x = 1 + (BOX_SIZE / 2) + + (j * (BOX_SIZE + 1)); + const float size = maxSize / (float) (1 << j); + + /* If the point size is too small, there won't be + * enough pixels drawn for the tests (below). + */ + if (size < 2.0) + continue; + + glPointSize(size - 0.2); + glBegin(GL_POINTS); + glTexCoord2f(1.5, 1.5); + glVertex2f(x, y); + glEnd(); + + if (!piglit_probe_pixel_rgb(x - (size / 4), + y + (size / 4), + upper_left) + || !piglit_probe_pixel_rgb(x - (size / 4), + y - (size / 4), + lower_left) + || !piglit_probe_pixel_rgb(x + (size / 4), + y + (size / 4), + lower_left) + || !piglit_probe_pixel_rgb(x + (size / 4), + y - (size / 4), + upper_left)) { + if (!piglit_automatic) + printf(" size = %.3f, " + "origin = %s left\n", + size, + (origins[i] == GL_UPPER_LEFT) + ? "upper" : "lower"); + pass = GL_FALSE; + } + } + } + + piglit_present_results(); + + return pass ? PIGLIT_PASS : PIGLIT_FAIL; +} -- 2.7.4 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit