---
 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

Reply via email to