--- tests/general/degenerate-prims.c | 59 ++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 18 deletions(-)
diff --git a/tests/general/degenerate-prims.c b/tests/general/degenerate-prims.c index d2bb7d6..6a73b65 100644 --- a/tests/general/degenerate-prims.c +++ b/tests/general/degenerate-prims.c @@ -35,10 +35,44 @@ #include "piglit-util-gl.h" +static const float verts2[2][2] = { {-1, -1}, {1, 1} }; +static const float verts3[3][2] = { {-1, -1}, {1, -1}, {0, 1} }; +static const float verts4[4][2] = { {-1, -1}, {1, -1}, {1, 1}, {-1, 1} }; + +struct test_config +{ + GLenum prim; + unsigned numVerts; + const void *verts; +}; + +static const struct test_config tests[] = { + { GL_POINTS, 0, verts2 }, + { GL_LINES, 1, verts2 }, + { GL_LINE_STRIP, 1, verts2 }, + { GL_LINE_LOOP, 1, verts2 }, + { GL_TRIANGLES, 2, verts3 }, + { GL_TRIANGLE_STRIP, 2, verts3 }, + { GL_TRIANGLE_FAN, 2, verts3 }, + { GL_QUADS, 3, verts4 }, + { GL_QUAD_STRIP, 3, verts4 }, + { GL_POLYGON, 2, verts4 }, + { 0 } +}; + + PIGLIT_GL_TEST_CONFIG_BEGIN config.supports_gl_compat_version = 10; config.window_visual = PIGLIT_GL_VISUAL_RGB | PIGLIT_GL_VISUAL_DOUBLE; config.khr_no_error_support = PIGLIT_NO_ERRORS; + + const char *subtests[ARRAY_SIZE(tests) - 1]; + for (int i = 0; tests[i].verts; i++) { + subtests[i] = piglit_get_prim_name(tests[i].prim); + } + subtests[ARRAY_SIZE(tests) - 1] = NULL; + config.all_subtests = subtests; + PIGLIT_GL_TEST_CONFIG_END @@ -47,16 +81,16 @@ PIGLIT_GL_TEST_CONFIG_END * The expected outcome is that nothing will be drawn. */ static bool -test_prim(GLenum prim, unsigned numVerts, const void *verts) +test_prim(const struct test_config *config) { static const float black[] = {0, 0, 0, 0}; bool pass; glClear(GL_COLOR_BUFFER_BIT); - glVertexPointer(2, GL_FLOAT, 0, verts); + glVertexPointer(2, GL_FLOAT, 0, config->verts); glEnable(GL_VERTEX_ARRAY); - glDrawArrays(prim, 0, numVerts); + glDrawArrays(config->prim, 0, config->numVerts); /* Nothing should have been drawn / look for all black */ pass = piglit_probe_rect_rgb(0, 0, piglit_width, piglit_height, black); @@ -64,7 +98,7 @@ test_prim(GLenum prim, unsigned numVerts, const void *verts) piglit_present_results(); piglit_report_subtest_result(pass ? PIGLIT_PASS : PIGLIT_FAIL, - "Primitive: %s", piglit_get_prim_name(prim)); + "Primitive: %s", piglit_get_prim_name(config->prim)); return pass; } @@ -73,10 +107,6 @@ test_prim(GLenum prim, unsigned numVerts, const void *verts) enum piglit_result piglit_display(void) { - static const float - verts2[2][2] = { {-1, -1}, {1, 1} }, - verts3[3][2] = { {-1, -1}, {1, -1}, {0, 1} }, - verts4[4][2] = { {-1, -1}, {1, -1}, {1, 1}, {-1, 1} }; bool pass = true; glMatrixMode(GL_PROJECTION); @@ -85,16 +115,9 @@ piglit_display(void) glColor3f(1, 1, 1); - pass = test_prim(GL_POINTS, 0, verts2) && pass; - pass = test_prim(GL_LINES, 1, verts2) && pass; - pass = test_prim(GL_LINE_STRIP, 1, verts2) && pass; - pass = test_prim(GL_LINE_LOOP, 1, verts2) && pass; - pass = test_prim(GL_TRIANGLES, 2, verts3) && pass; - pass = test_prim(GL_TRIANGLE_STRIP, 2, verts3) && pass; - pass = test_prim(GL_TRIANGLE_FAN, 2, verts3) && pass; - pass = test_prim(GL_QUADS, 3, verts4) && pass; - pass = test_prim(GL_QUAD_STRIP, 3, verts4) && pass; - pass = test_prim(GL_POLYGON, 2, verts4) && pass; + for (int i = 0; tests[i].verts; i++) { + pass = test_prim(&tests[i]) && pass; + } return pass ? PIGLIT_PASS : PIGLIT_FAIL; } -- git-series 0.9.1 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit