[Piglit] [PATCH] textureSamples: use piglit_draw_rect, remove duplication

Ilia Mirkin imirkin at alum.mit.edu
Thu Sep 10 16:20:26 PDT 2015


In response to Ian's review (which happened after I pushed):
 - use piglit_draw_rect -- it knows how to set up VAO/VBO/etc
 - no need to set the sampler, it's always 0
 - avoid duplicating the fs string between VS and GS

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
 tests/texturing/shaders/textureSamples.c | 82 ++++++++++----------------------
 1 file changed, 25 insertions(+), 57 deletions(-)

diff --git a/tests/texturing/shaders/textureSamples.c b/tests/texturing/shaders/textureSamples.c
index 053c34d..11b3b88 100644
--- a/tests/texturing/shaders/textureSamples.c
+++ b/tests/texturing/shaders/textureSamples.c
@@ -65,47 +65,21 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
 
 PIGLIT_GL_TEST_CONFIG_END
 
-static int vertex_location;
-
 enum piglit_result
 piglit_display()
 {
 	bool pass = true;
-	static const float verts[] = {
-		-1, -1,
-		-1,  1,
-		 1,  1,
-		 1, -1,
-	};
-	GLuint vbo;
 
 	glClearColor(0.5, 0.5, 0.5, 1.0);
 	glClear(GL_COLOR_BUFFER_BIT);
 
-	/* For GL core, we need to have a vertex array object bound.
-	 * Otherwise, we don't particularly have to.  Always use a
-	 * vertex buffer object, though.
-	 */
-	if (piglit_get_gl_version() >= 31) {
-		GLuint vao;
-		glGenVertexArrays(1, &vao);
-		glBindVertexArray(vao);
-	}
-	glGenBuffers(1, &vbo);
-	glBindBuffer(GL_ARRAY_BUFFER, vbo);
-	glBufferData(GL_ARRAY_BUFFER, sizeof(verts), verts, GL_STREAM_DRAW);
-
-	glVertexAttribPointer(vertex_location, 2, GL_FLOAT, GL_FALSE, 0, 0);
-	glEnableVertexAttribArray(vertex_location);
-
 	float expected_color[4] = {0, 1, 0};
 	glViewport(0, 0, piglit_width, piglit_height);
-	glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+	piglit_draw_rect(-1, -1, 2, 2);
 
 	pass &= piglit_probe_rect_rgb(0, 0, piglit_width, piglit_height,
 				      expected_color);
 
-	glDisableVertexAttribArray(vertex_location);
 	piglit_present_results();
 
 	return pass ? PIGLIT_PASS : PIGLIT_FAIL;
@@ -155,33 +129,23 @@ generate_GLSL(enum shader_target test_stage)
 			 "#extension GL_ARB_texture_multisample: enable\n"
 			 "#extension GL_ARB_shader_texture_image_samples: enable\n"
 			 "uniform %s tex;\n"
-			 "in vec4 vertex;\n"
+			 "in vec4 piglit_vertex;\n"
 			 "flat out int samples;\n"
 			 "void main()\n"
 			 "{\n"
 			 "    samples = textureSamples(tex);\n"
-			 "    gl_Position = vertex;\n"
+			 "    gl_Position = piglit_vertex;\n"
 			 "}\n",
 			 shader_version, sampler.name);
-		asprintf(&fs_code,
-			 "#version %d\n"
-			 "flat in int samples;\n"
-			 "out vec4 color;\n"
-			 "void main()\n"
-			 "{\n"
-			 "  if (samples == %d) color = vec4(0,1,0,1);\n"
-			 "  else color = vec4(1,0,0,1);\n"
-			 "}\n",
-			 shader_version, sample_count);
 		break;
 	case GS:
 		asprintf(&vs_code,
 			 "#version %d\n"
-			 "in vec4 vertex;\n"
+			 "in vec4 piglit_vertex;\n"
 			 "out vec4 pos_to_gs;\n"
 			 "void main()\n"
 			 "{\n"
-			 "    pos_to_gs = vertex;\n"
+			 "    pos_to_gs = piglit_vertex;\n"
 			 "}\n",
 			 shader_version);
 		asprintf(&gs_code,
@@ -202,24 +166,14 @@ generate_GLSL(enum shader_target test_stage)
 			 "    }\n"
 			 "}\n",
 			 shader_version, sampler.name);
-		asprintf(&fs_code,
-			 "#version %d\n"
-			 "flat in int samples;\n"
-			 "out vec4 color;\n"
-			 "void main()\n"
-			 "{\n"
-			 "  if (samples == %d) color = vec4(0,1,0,1);\n"
-			 "  else color = vec4(1,0,0,1);\n"
-			 "}\n",
-			 shader_version, sample_count);
 		break;
 	case FS:
 		asprintf(&vs_code,
 			 "#version %d\n"
-			 "in vec4 vertex;\n"
+			 "in vec4 piglit_vertex;\n"
 			 "void main()\n"
 			 "{\n"
-			 "    gl_Position = vertex;\n"
+			 "    gl_Position = piglit_vertex;\n"
 			 "}\n",
 			 shader_version);
 		asprintf(&fs_code,
@@ -240,6 +194,24 @@ generate_GLSL(enum shader_target test_stage)
 		break;
 	}
 
+	switch (test_stage) {
+	case VS:
+	case GS:
+		asprintf(&fs_code,
+			 "#version %d\n"
+			 "flat in int samples;\n"
+			 "out vec4 color;\n"
+			 "void main()\n"
+			 "{\n"
+			 "  if (samples == %d) color = vec4(0,1,0,1);\n"
+			 "  else color = vec4(1,0,0,1);\n"
+			 "}\n",
+			 shader_version, sample_count);
+		break;
+	default:
+		break;
+	}
+
 	vs = piglit_compile_shader_text(GL_VERTEX_SHADER, vs_code);
 	if (gs_code) {
 		gs = piglit_compile_shader_text(GL_GEOMETRY_SHADER, gs_code);
@@ -315,7 +287,6 @@ void
 piglit_init(int argc, char **argv)
 {
 	int prog;
-	int tex_location;
 
 	piglit_require_extension("GL_ARB_shader_texture_image_samples");
 	require_GL_features(test_stage);
@@ -350,10 +321,7 @@ piglit_init(int argc, char **argv)
 	if (!prog)
 		piglit_report_result(PIGLIT_FAIL);
 
-	tex_location = glGetUniformLocation(prog, "tex");
-	vertex_location = glGetAttribLocation(prog, "vertex");
 	glUseProgram(prog);
-	glUniform1i(tex_location, 0);
 
 	generate_texture();
 }
-- 
2.4.6



More information about the Piglit mailing list