And require GL 1.1 since that's when color logicops were introduced.
Technically, we should move/rename the test, but it's hardly worth it.
---
 tests/spec/gl-1.0/logicop.c | 90 +++++++++++++++++++++++++++++----------------
 1 file changed, 58 insertions(+), 32 deletions(-)

diff --git a/tests/spec/gl-1.0/logicop.c b/tests/spec/gl-1.0/logicop.c
index 9ff80be..d415335 100644
--- a/tests/spec/gl-1.0/logicop.c
+++ b/tests/spec/gl-1.0/logicop.c
@@ -46,7 +46,7 @@
 
 PIGLIT_GL_TEST_CONFIG_BEGIN
 
-       config.supports_gl_compat_version = 10;
+       config.supports_gl_compat_version = 11;
 
        config.window_visual = PIGLIT_GL_VISUAL_RGBA |
                PIGLIT_GL_VISUAL_DOUBLE;
@@ -54,12 +54,28 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
 
 PIGLIT_GL_TEST_CONFIG_END
 
-void
-piglit_init(int argc, char **argv)
-{
-       srand(0);
-       piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
-}
+
+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)
@@ -67,7 +83,7 @@ random_image_data(void)
        int i;
        GLubyte *img = malloc(4 * img_width * img_height * sizeof(GLubyte));
        for (i = 0; i < 4 * img_width * img_height; ++i) {
-               img[i] = rand() % 256;
+               img[i] = /*rand()*/ (100+i) % 256;
        }
        return img;
 }
@@ -284,32 +300,42 @@ piglit_display(void)
        enum piglit_result subtest;
        unsigned int op;
 
-       static 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
-       };
-
        for (op = 0; op < ARRAY_SIZE(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;
+               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;
+               }
        }
 
        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);
+               }
+       }
+
+}
-- 
1.9.1

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

Reply via email to