From: Nicolai Hähnle <[email protected]>

---
 .../spec/arb_query_buffer_object/CMakeLists.gl.txt |   2 +-
 tests/spec/arb_query_buffer_object/common.c        | 169 +++++++++++++++++++++
 tests/spec/arb_query_buffer_object/common.h        |  58 +++++++
 tests/spec/arb_query_buffer_object/qbo.c           | 140 ++---------------
 4 files changed, 240 insertions(+), 129 deletions(-)
 create mode 100644 tests/spec/arb_query_buffer_object/common.c
 create mode 100644 tests/spec/arb_query_buffer_object/common.h

diff --git a/tests/spec/arb_query_buffer_object/CMakeLists.gl.txt 
b/tests/spec/arb_query_buffer_object/CMakeLists.gl.txt
index 9a3d202c0..30a545546 100644
--- a/tests/spec/arb_query_buffer_object/CMakeLists.gl.txt
+++ b/tests/spec/arb_query_buffer_object/CMakeLists.gl.txt
@@ -1,13 +1,13 @@
 include_directories(
        ${GLEXT_INCLUDE_DIR}
        ${OPENGL_INCLUDE_PATH}
        )
 
 link_libraries(
        piglitutil_${piglit_target_api}
        ${OPENGL_gl_LIBRARY}
        )
 
-piglit_add_executable(arb_query_buffer_object-qbo qbo.c)
+piglit_add_executable(arb_query_buffer_object-qbo qbo.c common.c)
 
 # vim: ft=cmake:
diff --git a/tests/spec/arb_query_buffer_object/common.c 
b/tests/spec/arb_query_buffer_object/common.c
new file mode 100644
index 000000000..cd6bd4787
--- /dev/null
+++ b/tests/spec/arb_query_buffer_object/common.c
@@ -0,0 +1,169 @@
+/*
+ * Copyright © 2015 Glenn Kennard
+ * Copyright (c) 2017 Advanced Micro Devices, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ */
+
+#include "common.h"
+
+static int prog;
+
+/* Note: meaningful test cases (with non-zero values) for the following are
+ * missing:
+ *  - GL_COMPUTE_SHADER_INVOCATIONS_ARB
+ *  - GL_GEOMETRY_SHADER_INVOCATIONS
+ *  - GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB
+ *  - GL_TESS_CONTROL_SHADER_PATCHES_ARB
+ *  - GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB
+ *  - GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
+ */
+const struct query_type_desc query_types[] = {
+       { GL_ANY_SAMPLES_PASSED,                        { 
"GL_ARB_occlusion_query2", NULL } },
+       { GL_ANY_SAMPLES_PASSED_CONSERVATIVE,           { 
"GL_ARB_ES3_compatibility", NULL } },
+       { GL_CLIPPING_INPUT_PRIMITIVES_ARB,             { 
"GL_ARB_pipeline_statistics_query", NULL } },
+       { GL_CLIPPING_OUTPUT_PRIMITIVES_ARB,            { 
"GL_ARB_pipeline_statistics_query", NULL } },
+       { GL_COMPUTE_SHADER_INVOCATIONS_ARB,            { 
"GL_ARB_pipeline_statistics_query", "GL_ARB_compute_shader" } },
+       { GL_FRAGMENT_SHADER_INVOCATIONS_ARB,           { 
"GL_ARB_pipeline_statistics_query", NULL } },
+       { GL_GEOMETRY_SHADER_INVOCATIONS,               { 
"GL_ARB_pipeline_statistics_query", NULL } },
+       { GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB,    { 
"GL_ARB_pipeline_statistics_query", NULL } },
+       { GL_PRIMITIVES_GENERATED,                      { NULL, } },
+       { GL_PRIMITIVES_SUBMITTED_ARB,                  { 
"GL_ARB_pipeline_statistics_query", NULL } },
+       { GL_SAMPLES_PASSED_ARB,                        { NULL, } },
+       { GL_TESS_CONTROL_SHADER_PATCHES_ARB,           { 
"GL_ARB_pipeline_statistics_query", "GL_ARB_tessellation_shader" } },
+       { GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB,    { 
"GL_ARB_pipeline_statistics_query", "GL_ARB_tessellation_shader" } },
+       { GL_TIMESTAMP,                                 { "GL_ARB_timer_query", 
NULL } },
+       { GL_TIME_ELAPSED,                              { "GL_ARB_timer_query", 
NULL } },
+       { GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN,     { NULL, } },
+       { GL_VERTEX_SHADER_INVOCATIONS_ARB,             { 
"GL_ARB_pipeline_statistics_query", NULL } },
+       { GL_VERTICES_SUBMITTED_ARB,                    { 
"GL_ARB_pipeline_statistics_query", NULL } },
+};
+
+unsigned
+num_query_types() {
+       return ARRAY_SIZE(query_types);
+}
+
+void
+get_query_values(const struct query_type_desc *desc, bool *exact, uint32_t 
*expected)
+{
+       *exact = true;
+
+       switch (desc->type) {
+       case GL_ANY_SAMPLES_PASSED:
+       case GL_ANY_SAMPLES_PASSED_CONSERVATIVE:
+               *expected = 1;
+               break;
+       case GL_CLIPPING_INPUT_PRIMITIVES_ARB:
+       case GL_CLIPPING_OUTPUT_PRIMITIVES_ARB:
+               *exact = false;
+               *expected = 1;
+               break;
+       case GL_FRAGMENT_SHADER_INVOCATIONS_ARB:
+               *exact = false;
+               *expected = 1;
+               break;
+       case GL_PRIMITIVES_GENERATED:
+       case GL_PRIMITIVES_SUBMITTED_ARB:
+               *exact = false;
+               *expected = 1;
+               break;
+       case GL_SAMPLES_PASSED_ARB:
+               *expected = piglit_width * piglit_height;
+               break;
+       case GL_TIMESTAMP:
+       case GL_TIME_ELAPSED:
+               *exact = false;
+               *expected = 1;
+               break;
+       case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
+               *expected = 0;
+               break;
+       case GL_VERTEX_SHADER_INVOCATIONS_ARB:
+       case GL_VERTICES_SUBMITTED_ARB:
+               *exact = false;
+               *expected = 1;
+               break;
+       case GL_COMPUTE_SHADER_INVOCATIONS_ARB:
+       case GL_GEOMETRY_SHADER_INVOCATIONS:
+       case GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB:
+       case GL_TESS_CONTROL_SHADER_PATCHES_ARB:
+       case GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB:
+               *expected = 0;
+               break;
+       default:
+               abort();
+       }
+}
+
+bool
+is_query_supported(const struct query_type_desc *desc)
+{
+       for (unsigned i = 0; i < ARRAY_SIZE(desc->extensions); ++i) {
+               if (!desc->extensions[i])
+                       break;
+
+               if (!piglit_is_extension_supported(desc->extensions[i]))
+                       return false;
+       }
+
+       return true;
+}
+
+void
+run_query(unsigned query, const struct query_type_desc *desc)
+{
+       GLenum query_type = desc->type;
+
+       glClearColor(0.5, 0.5, 0.5, 1.0);
+       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+       /* Enable query, draw something that should pass */
+       glEnable(GL_DEPTH_TEST);
+       glUseProgram(prog);
+       if (query_type != GL_TIMESTAMP)
+               glBeginQuery(query_type, query);
+       piglit_draw_rect_z(0.5, -1, -1, 2, 2);
+       if (query_type != GL_TIMESTAMP)
+               glEndQuery(query_type);
+       else
+               glQueryCounter(query, query_type);
+}
+
+void
+query_common_init()
+{
+       static const char vsCode[] =
+               "#version 150\n"
+               "in vec4 pos_in;\n"
+               "void main() {\n"
+               "       gl_Position = pos_in;\n"
+               "}\n";
+
+       static const char fsCode[] =
+               "#version 150\n"
+               "out vec4 color;\n"
+               "void main() {\n"
+               "       color = vec4(0.0, 0.0, 1.0, 1.0);\n"
+               "}\n";
+
+       prog = piglit_build_simple_program(vsCode, fsCode);
+}
diff --git a/tests/spec/arb_query_buffer_object/common.h 
b/tests/spec/arb_query_buffer_object/common.h
new file mode 100644
index 000000000..89dc8b494
--- /dev/null
+++ b/tests/spec/arb_query_buffer_object/common.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright © 2015 Glenn Kennard
+ * Copyright (c) 2017 Advanced Micro Devices, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ */
+
+/**
+ * \file common.h
+ * Common tools for generating queries.
+ */
+
+#ifndef ARB_QUERY_BUFFER_OBJECT_COMMON_H
+#define ARB_QUERY_BUFFER_OBJECT_COMMON_H
+
+#include "piglit-util-gl.h"
+
+struct query_type_desc {
+       GLenum type;
+       const char *extensions[2];
+};
+
+extern const struct query_type_desc query_types[];
+
+unsigned num_query_types();
+
+void
+get_query_values(const struct query_type_desc *desc, bool *exact, uint32_t 
*expected);
+
+bool
+is_query_supported(const struct query_type_desc *desc);
+
+void
+run_query(unsigned query, const struct query_type_desc *desc);
+
+void
+query_common_init();
+
+
+#endif /* ARB_QUERY_BUFFER_OBJECT_COMMON_H */
diff --git a/tests/spec/arb_query_buffer_object/qbo.c 
b/tests/spec/arb_query_buffer_object/qbo.c
index 44c24826f..3ba11ee26 100644
--- a/tests/spec/arb_query_buffer_object/qbo.c
+++ b/tests/spec/arb_query_buffer_object/qbo.c
@@ -24,38 +24,37 @@
  */
 
 /**
  * \file qbo.c
  * Tests ARB_query_buffer_object
  * - synchronous wait for result
  * - asynchrounous result, default value is left intact if result unavailable
  * - asynchrounous result, retrieve result to client memory before & after
  */
 
-#include "piglit-util-gl.h"
+#include "common.h"
 
 PIGLIT_GL_TEST_CONFIG_BEGIN
        config.supports_gl_compat_version = 32;
        config.supports_gl_core_version = 32;
        config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE |
                PIGLIT_GL_VISUAL_DEPTH;
 
 PIGLIT_GL_TEST_CONFIG_END
 
 #define BUFFER_OFFSET(i) ((void *)((char *)NULL + i))
 
 static const float green[] = {0, 1, 0, 1};
 
 static unsigned query;
 static unsigned qbo;
 
-static int prog;
 static int qbo_prog;
 static int sync_mode_loc;
 static int expect_exact_loc;
 static int is_64bit_loc;
 static int expected_loc;
 static int expected_hi_loc;
 
 enum sync_mode {
        QBO_SYNC,
        QBO_SYNC_CPU_READ_AFTER_CACHE_TEST,
@@ -66,111 +65,24 @@ enum sync_mode {
 };
 
 static const char * const sync_mode_names[] = {
        "SYNC",
        "SYNC_CPU_READ_AFTER_CACHE_TEST",
        "ASYNC",
        "ASYNC_CPU_READ_BEFORE",
        "ASYNC_CPU_READ_AFTER",
 };
 
-static GLenum query_type;
+static const struct query_type_desc *query_desc;
 static enum sync_mode sync_mode;
 static GLenum result_type;
 
-struct query_type_desc {
-       GLenum type;
-       const char *extensions[2];
-};
-
-/* Note: meaningful test cases (with non-zero values) for the following are
- * missing:
- *  - GL_COMPUTE_SHADER_INVOCATIONS_ARB
- *  - GL_GEOMETRY_SHADER_INVOCATIONS
- *  - GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB
- *  - GL_TESS_CONTROL_SHADER_PATCHES_ARB
- *  - GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB
- *  - GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
- */
-static const struct query_type_desc query_types[] = {
-       { GL_ANY_SAMPLES_PASSED,                        { 
"GL_ARB_occlusion_query2", NULL } },
-       { GL_ANY_SAMPLES_PASSED_CONSERVATIVE,           { 
"GL_ARB_ES3_compatibility", NULL } },
-       { GL_CLIPPING_INPUT_PRIMITIVES_ARB,             { 
"GL_ARB_pipeline_statistics_query", NULL } },
-       { GL_CLIPPING_OUTPUT_PRIMITIVES_ARB,            { 
"GL_ARB_pipeline_statistics_query", NULL } },
-       { GL_COMPUTE_SHADER_INVOCATIONS_ARB,            { 
"GL_ARB_pipeline_statistics_query", "GL_ARB_compute_shader" } },
-       { GL_FRAGMENT_SHADER_INVOCATIONS_ARB,           { 
"GL_ARB_pipeline_statistics_query", NULL } },
-       { GL_GEOMETRY_SHADER_INVOCATIONS,               { 
"GL_ARB_pipeline_statistics_query", NULL } },
-       { GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB,    { 
"GL_ARB_pipeline_statistics_query", NULL } },
-       { GL_PRIMITIVES_GENERATED,                      { NULL, } },
-       { GL_PRIMITIVES_SUBMITTED_ARB,                  { 
"GL_ARB_pipeline_statistics_query", NULL } },
-       { GL_SAMPLES_PASSED_ARB,                        { NULL, } },
-       { GL_TESS_CONTROL_SHADER_PATCHES_ARB,           { 
"GL_ARB_pipeline_statistics_query", "GL_ARB_tessellation_shader" } },
-       { GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB,    { 
"GL_ARB_pipeline_statistics_query", "GL_ARB_tessellation_shader" } },
-       { GL_TIMESTAMP,                                 { "GL_ARB_timer_query", 
NULL } },
-       { GL_TIME_ELAPSED,                              { "GL_ARB_timer_query", 
NULL } },
-       { GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN,     { NULL, } },
-       { GL_VERTEX_SHADER_INVOCATIONS_ARB,             { 
"GL_ARB_pipeline_statistics_query", NULL } },
-       { GL_VERTICES_SUBMITTED_ARB,                    { 
"GL_ARB_pipeline_statistics_query", NULL } },
-};
-
-static void
-get_query_values(GLenum query_type, bool *exact, uint32_t *expected)
-{
-       *exact = true;
-
-       switch (query_type) {
-       case GL_ANY_SAMPLES_PASSED:
-       case GL_ANY_SAMPLES_PASSED_CONSERVATIVE:
-               *expected = 1;
-               break;
-       case GL_CLIPPING_INPUT_PRIMITIVES_ARB:
-       case GL_CLIPPING_OUTPUT_PRIMITIVES_ARB:
-               *exact = false;
-               *expected = 1;
-               break;
-       case GL_FRAGMENT_SHADER_INVOCATIONS_ARB:
-               *exact = false;
-               *expected = 1;
-               break;
-       case GL_PRIMITIVES_GENERATED:
-       case GL_PRIMITIVES_SUBMITTED_ARB:
-               *exact = false;
-               *expected = 1;
-               break;
-       case GL_SAMPLES_PASSED_ARB:
-               *expected = piglit_width * piglit_height;
-               break;
-       case GL_TIMESTAMP:
-       case GL_TIME_ELAPSED:
-               *exact = false;
-               *expected = 1;
-               break;
-       case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
-               *expected = 0;
-               break;
-       case GL_VERTEX_SHADER_INVOCATIONS_ARB:
-       case GL_VERTICES_SUBMITTED_ARB:
-               *exact = false;
-               *expected = 1;
-               break;
-       case GL_COMPUTE_SHADER_INVOCATIONS_ARB:
-       case GL_GEOMETRY_SHADER_INVOCATIONS:
-       case GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB:
-       case GL_TESS_CONTROL_SHADER_PATCHES_ARB:
-       case GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB:
-               *expected = 0;
-               break;
-       default:
-               abort();
-       }
-}
-
 static enum piglit_result
 cpu_gather_query(bool exact, uint32_t expected, uint64_t *cpu_result)
 {
        *cpu_result = 0;
 
        glBindBuffer(GL_QUERY_BUFFER, 0);
 
        if (result_type == GL_INT)
                glGetQueryObjectiv(query, GL_QUERY_RESULT, (GLint*)cpu_result);
        else if (result_type == GL_UNSIGNED_INT)
@@ -189,41 +101,29 @@ run_subtest(void)
 {
        bool exact;
        uint32_t expected;
        uint64_t cpu_result;
        bool have_cpu_result = false;
        uint32_t default_value[4] = { 0xccccccccu, 0xccccccccu, 0xccccccccu, 
0xccccccccu };
        bool is_sync =
                sync_mode == QBO_SYNC ||
                sync_mode == QBO_SYNC_CPU_READ_AFTER_CACHE_TEST;
 
-       get_query_values(query_type, &exact, &expected);
+       get_query_values(query_desc, &exact, &expected);
 
-       glClearColor(0.5, 0.5, 0.5, 1.0);
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+       glGenQueries(1, &query);
+       run_query(query, query_desc);
 
        /* Load default value into buffer */
        glBindBuffer(GL_QUERY_BUFFER, qbo);
        glBufferData(GL_QUERY_BUFFER, 16, default_value, GL_DYNAMIC_COPY);
 
-       /* Enable query, draw something that should pass */
-       glEnable(GL_DEPTH_TEST);
-       glUseProgram(prog);
-       glGenQueries(1, &query);
-       if (query_type != GL_TIMESTAMP)
-               glBeginQuery(query_type, query);
-       piglit_draw_rect_z(0.5, -1, -1, 2, 2);
-       if (query_type != GL_TIMESTAMP)
-               glEndQuery(query_type);
-       else
-               glQueryCounter(query, query_type);
-
        if (sync_mode == QBO_ASYNC_CPU_READ_BEFORE) {
                if (cpu_gather_query(exact, expected, &cpu_result))
                        return PIGLIT_FAIL;
                have_cpu_result = true;
        }
 
        glBindBuffer(GL_QUERY_BUFFER, qbo);
        if (is_sync) {
                /* Special mode to test against a possible cache invalidation
                 * in case the wait-for-result is handled at a different place
@@ -295,86 +195,71 @@ run_subtest(void)
 enum piglit_result
 piglit_display(void)
 {
        static const GLenum result_types[] = {
                GL_INT,
                GL_UNSIGNED_INT,
                GL_UNSIGNED_INT64_ARB
        };
        enum piglit_result r = PIGLIT_PASS;
 
-       for (unsigned qnum = 0; qnum < ARRAY_SIZE(query_types); qnum++) {
-               const struct query_type_desc *desc = &query_types[qnum];
-               bool supported = true;
-
-               query_type = desc->type;
+       for (unsigned qnum = 0; qnum < num_query_types(); qnum++) {
+               query_desc = &query_types[qnum];
 
-               for (unsigned i = 0; i < ARRAY_SIZE(desc->extensions); ++i) {
-                       if (!desc->extensions[i])
-                               break;
-
-                       if 
(!piglit_is_extension_supported(desc->extensions[i])) {
-                               supported = false;
-                               break;
-                       }
-               }
+               bool supported = is_query_supported(query_desc);
 
                for (sync_mode = QBO_SYNC;
                     sync_mode < NUM_QBO_SYNC_MODES;
                     sync_mode++) {
                        for (unsigned ridx = 0; ridx < 
ARRAY_SIZE(result_types); ++ridx) {
                                enum piglit_result subtest_result = PIGLIT_SKIP;
 
                                result_type = result_types[ridx];
 
                                if (supported) {
                                        subtest_result = run_subtest();
                                        if (subtest_result != PIGLIT_PASS)
                                                r = subtest_result;
                                }
 
                                piglit_report_subtest_result(subtest_result, 
"query-%s-%s-%s",
-                                               
piglit_get_gl_enum_name(query_type),
+                                               
piglit_get_gl_enum_name(query_desc->type),
                                                sync_mode_names[sync_mode],
                                                
piglit_get_gl_enum_name(result_type));
                        }
                }
        }
 
        return r;
 }
 
 void
 piglit_init(int argc, char **argv)
 {
        char *vsCode;
-       char *fsCode, *qboFsCode;
+       char *qboFsCode;
 
        piglit_require_extension("GL_ARB_query_buffer_object");
        piglit_require_extension("GL_ARB_uniform_buffer_object");
 
+       query_common_init();
+
        glGenBuffers(1, &qbo);
        glBindBuffer(GL_QUERY_BUFFER, qbo);
        glBufferData(GL_QUERY_BUFFER, 4, NULL, GL_DYNAMIC_COPY);
 
        vsCode =
                "#version 150\n"
                "in vec4 pos_in;\n"
                "void main() {\n"
                "       gl_Position = pos_in;\n"
                "}\n";
-       fsCode =
-               "#version 150\n"
-               "out vec4 color;\n"
-               "void main() {\n"
-               "       color = vec4(0.0, 0.0, 1.0, 1.0);\n"
-               "}\n";
        qboFsCode =
                "#version 150\n"
                "#extension GL_ARB_uniform_buffer_object : require\n"
                "uniform query {\n"
                "       uint result;\n"
                "       uint result_hi;\n"
                "       uint available;\n"
                "       uint available_hi;\n"
                "};\n"
                "uniform bool sync_mode;\n"
@@ -409,18 +294,17 @@ piglit_init(int argc, char **argv)
                "               if (result_ok) {\n"
                "                       color = vec4(0.0, 1.0, 0.0, 1.0);\n"
                "               } else if (ready) {\n"
                "                       color = vec4(1.0, 0.0, 0.0, 1.0);\n"
                "               } else {\n"
                "                       color = vec4(1.0, 0.5, 0.0, 1.0);\n"
                "               }\n"
                "       }\n"
                "}\n";
 
-       prog = piglit_build_simple_program(vsCode, fsCode);
        qbo_prog = piglit_build_simple_program(vsCode, qboFsCode);
        sync_mode_loc = glGetUniformLocation(qbo_prog, "sync_mode");
        expect_exact_loc = glGetUniformLocation(qbo_prog, "expect_exact");
        is_64bit_loc = glGetUniformLocation(qbo_prog, "is_64bit");
        expected_loc = glGetUniformLocation(qbo_prog, "expected");
        expected_hi_loc = glGetUniformLocation(qbo_prog, "expected_hi");
 }
-- 
2.11.0

_______________________________________________
Piglit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to