This coverts the test to use the piglit_run_selected_subtests function,
which provides a nicer mechanism for running selected subtests, and
enumerates all subtests ahead of time.
---
 tests/spec/gl-1.0/logicop.c | 97 ++++++++++++++++---------------------
 1 file changed, 41 insertions(+), 56 deletions(-)

diff --git a/tests/spec/gl-1.0/logicop.c b/tests/spec/gl-1.0/logicop.c
index 377cd7dca..967e567a9 100644
--- a/tests/spec/gl-1.0/logicop.c
+++ b/tests/spec/gl-1.0/logicop.c
@@ -44,8 +44,42 @@
 #define img_width drawing_size
 #define img_height drawing_size
 
+static struct piglit_gl_test_config *piglit_config;
+
+static enum piglit_result test_logicop(void * data);
+
+#define TEST_ELEMENT(mode)              \
+       {                               \
+               #mode,                  \
+               #mode,                  \
+               test_logicop,           \
+               (void *)(intptr_t)mode  \
+       }
+static struct piglit_subtest tests[] = {
+       TEST_ELEMENT(GL_CLEAR),
+       TEST_ELEMENT(GL_SET),
+       TEST_ELEMENT(GL_COPY),
+       TEST_ELEMENT(GL_COPY_INVERTED),
+       TEST_ELEMENT(GL_NOOP),
+       TEST_ELEMENT(GL_INVERT),
+       TEST_ELEMENT(GL_AND),
+       TEST_ELEMENT(GL_NAND),
+       TEST_ELEMENT(GL_OR),
+       TEST_ELEMENT(GL_NOR),
+       TEST_ELEMENT(GL_XOR),
+       TEST_ELEMENT(GL_EQUIV),
+       TEST_ELEMENT(GL_AND_REVERSE),
+       TEST_ELEMENT(GL_AND_INVERTED),
+       TEST_ELEMENT(GL_OR_REVERSE),
+       TEST_ELEMENT(GL_OR_INVERTED),
+       { 0 }
+};
+#undef TEST_ELEMENT
+
 PIGLIT_GL_TEST_CONFIG_BEGIN
 
+       piglit_config = &config;
+       config.subtests = tests;
        config.supports_gl_compat_version = 11;
 
        config.window_visual = PIGLIT_GL_VISUAL_RGBA |
@@ -54,29 +88,6 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
 
 PIGLIT_GL_TEST_CONFIG_END
 
-
-static const GLenum logicop_modes[] = {
-       GL_CLEAR,
-       GL_SET,
-       GL_COPY,
-       GL_COPY_INVERTED,
-       GL_NOOP,
-       GL_INVERT,
-       GL_AND,
-       GL_NAND,
-       GL_OR,
-       GL_NOR,
-       GL_XOR,
-       GL_EQUIV,
-       GL_AND_REVERSE,
-       GL_AND_INVERTED,
-       GL_OR_REVERSE,
-       GL_OR_INVERTED
-};
-
-static GLenum test_single = 0;  /* 0 = test all logicop modes */
-
-
 static GLubyte*
 random_image_data(void)
 {
@@ -211,8 +222,9 @@ make_image(GLuint *name, GLubyte *data)
 }
 
 static enum piglit_result
-test_logicop(GLenum logicop)
+test_logicop(void * data)
 {
+       GLenum logicop = (GLenum)(intptr_t)data;
        bool pass = true;
        int x, y;
        GLuint dst_name;
@@ -297,45 +309,18 @@ enum piglit_result
 piglit_display(void)
 {
        enum piglit_result result = PIGLIT_PASS;
-       enum piglit_result subtest;
-       unsigned int op;
-
-       for (op = 0; op < ARRAY_SIZE(logicop_modes); ++op) {
-               if (test_single == 0 || test_single == logicop_modes[op]) {
-                       subtest = test_logicop(logicop_modes[op]);
-                       piglit_report_subtest_result(subtest, "%s",
-                               piglit_get_gl_enum_name(logicop_modes[op]));
-                       if (subtest == PIGLIT_FAIL)
-                               result = PIGLIT_FAIL;
-               }
-       }
+       result = piglit_run_selected_subtests(
+               tests,
+               piglit_config->selected_subtests,
+               piglit_config->num_selected_subtests,
+               result);
 
        return result;
 }
 
-
 void
 piglit_init(int argc, char **argv)
 {
        srand(0);
        piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
-
-       if (argc > 1) {
-               /* argv[1] may be one of the logic op modes, like "GL_XOR" */
-               int i;
-
-               for (i = 0; i < ARRAY_SIZE(logicop_modes); i++) {
-                       const char * mode =
-                               piglit_get_gl_enum_name(logicop_modes[i]);
-                       if (strcmp(argv[1], mode) == 0) {
-                               test_single = logicop_modes[i];
-                               break;
-                       }
-               }
-               if (test_single == 0) {
-                       printf("Invalid glLogicOp mode %s\n", argv[1]);
-                       piglit_report_result(PIGLIT_SKIP);
-               }
-       }
-
 }
-- 
2.19.2

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to