---
 tests/spec/gl-3.0/render-integer.c | 100 ++++++++++++++++-------------
 1 file changed, 55 insertions(+), 45 deletions(-)

diff --git a/tests/spec/gl-3.0/render-integer.c 
b/tests/spec/gl-3.0/render-integer.c
index 2937ec50c..ca2e1fe40 100644
--- a/tests/spec/gl-3.0/render-integer.c
+++ b/tests/spec/gl-3.0/render-integer.c
@@ -29,10 +29,53 @@
 
 #include "piglit-util-gl.h"
 
+static struct piglit_gl_test_config * piglit_config;
+static enum piglit_result test_format(void * data);
+
+#define CREATE_TEST(name)              \
+       {                              \
+               #name,                 \
+               #name,                 \
+               test_format,           \
+               (void *)(intptr_t)name \
+       }
+static struct piglit_subtest tests[] = {
+       CREATE_TEST(GL_RGBA32I),
+       CREATE_TEST(GL_RGB32I),
+       CREATE_TEST(GL_RG32I),
+       CREATE_TEST(GL_R32I),
+       CREATE_TEST(GL_RGBA16I),
+       CREATE_TEST(GL_RGB16I),
+       CREATE_TEST(GL_RG16I),
+       CREATE_TEST(GL_R16I),
+       CREATE_TEST(GL_RGBA8I),
+       CREATE_TEST(GL_RGB8I),
+       CREATE_TEST(GL_RG8I),
+       CREATE_TEST(GL_R8I),
+
+       CREATE_TEST(GL_RGBA32UI),
+       CREATE_TEST(GL_RGB32UI),
+       CREATE_TEST(GL_RG32UI),
+       CREATE_TEST(GL_R32UI),
+       CREATE_TEST(GL_RGBA16UI),
+       CREATE_TEST(GL_RGB16UI),
+       CREATE_TEST(GL_RG16UI),
+       CREATE_TEST(GL_R16UI),
+       CREATE_TEST(GL_RGBA8UI),
+       CREATE_TEST(GL_RGB8UI),
+       CREATE_TEST(GL_RG8UI),
+       CREATE_TEST(GL_R8UI),
+       { 0 },
+};
+#undef CREATE_TEST
+
 PIGLIT_GL_TEST_CONFIG_BEGIN
+       piglit_config = &config;
+       config.subtests = tests;
        config.supports_gl_compat_version = 30;
        config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE;
        config.khr_no_error_support = PIGLIT_NO_ERRORS;
+
 PIGLIT_GL_TEST_CONFIG_END
 
 
@@ -197,9 +240,10 @@ setup_fbo(GLenum intFormat)
 
 
 
-static bool
-test_format(GLenum intFormat)
+static enum piglit_result
+test_format(void * data)
 {
+       GLenum intFormat = (GLenum)(intptr_t)data;
        static const GLint red[4] = {1000, 0, 0, 0};
        static const GLint green[4] = {2000, 0, 0, 0};
        static const GLint blue[4] = {0, 0, 3000, 0};
@@ -209,11 +253,9 @@ test_format(GLenum intFormat)
        int x1 = TexSize * 3 / 4;
        int y1 = TexSize * 3 / 4;
        bool pass = true;
-       enum piglit_result result;
 
        if (!setup_fbo(intFormat)) {
-               result = PIGLIT_SKIP;
-               goto end;
+               return PIGLIT_SKIP;
        }
 
        /* Draw different value into each texture quadrant */
@@ -234,54 +276,22 @@ test_format(GLenum intFormat)
        pass = probe_int(x0, y1, blue, intFormat) && pass;
        pass = probe_int(x1, y1, alpha, intFormat) && pass;
 
-       result = pass ? PIGLIT_PASS : PIGLIT_FAIL;
-
-end:
-       piglit_report_subtest_result(result,
-                                    "Format %s",
-                                    piglit_get_gl_enum_name(intFormat));
-       return pass;
+       return pass ? PIGLIT_PASS : PIGLIT_FAIL;
 }
 
 
 enum piglit_result
 piglit_display(void)
 {
-       static const GLenum formats[] = {
-               GL_RGBA32I,
-               GL_RGB32I,
-               GL_RG32I,
-               GL_R32I,
-               GL_RGBA16I,
-               GL_RGB16I,
-               GL_RG16I,
-               GL_R16I,
-               GL_RGBA8I,
-               GL_RGB8I,
-               GL_RG8I,
-               GL_R8I,
-
-               GL_RGBA32UI,
-               GL_RGB32UI,
-               GL_RG32UI,
-               GL_R32UI,
-               GL_RGBA16UI,
-               GL_RGB16UI,
-               GL_RG16UI,
-               GL_R16UI,
-               GL_RGBA8UI,
-               GL_RGB8UI,
-               GL_RG8UI,
-               GL_R8UI,
-       };
-       bool pass = true;
-       int i;
+       enum piglit_result result = PIGLIT_PASS;
 
-       for (i = 0; i < ARRAY_SIZE(formats); i++) {
-               pass = test_format(formats[i]) && pass;
-       }
+       result = piglit_run_selected_subtests(
+               tests,
+               piglit_config->selected_subtests,
+               piglit_config->num_selected_subtests,
+               result);
 
-       return pass ? PIGLIT_PASS : PIGLIT_FAIL;
+       return result;
 }
 
 
-- 
2.19.1

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

Reply via email to