[Piglit] [PATCH 1/2] arb_query_buffer_object: extract some common code for running queries

Nicolai Hähnle nhaehnle at gmail.com
Mon Sep 18 14:49:19 UTC 2017


From: Nicolai Hähnle <nicolai.haehnle at amd.com>

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



More information about the Piglit mailing list