[Piglit] [PATCH 4/5] fbo-drawbuffers-none: Add a sub test for fragment shader out variables

Anuj Phogat anuj.phogat at gmail.com
Mon May 19 13:51:40 PDT 2014


Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
---
 tests/all.py                                       |  1 +
 .../arb_framebuffer_object/fbo-drawbuffers-none.c  | 22 +++++++++++++++++++++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/tests/all.py b/tests/all.py
index c841110..0cb8f2e 100644
--- a/tests/all.py
+++ b/tests/all.py
@@ -1706,6 +1706,7 @@ add_concurrent_test(arb_framebuffer_object, 'fbo-drawbuffers-none glClear')
 add_concurrent_test(arb_framebuffer_object, 'fbo-drawbuffers-none glClearBuffer')
 add_concurrent_test(arb_framebuffer_object, 'fbo-drawbuffers-none gl_FragColor')
 add_concurrent_test(arb_framebuffer_object, 'fbo-drawbuffers-none gl_FragData')
+add_concurrent_test(arb_framebuffer_object, 'fbo-drawbuffers-none frag_out')
 add_concurrent_test(arb_framebuffer_object, 'fbo-drawbuffers-none glColorMaskIndexed')
 add_concurrent_test(arb_framebuffer_object, 'fbo-drawbuffers-none glBlendFunci')
 add_concurrent_test(arb_framebuffer_object, 'fbo-drawbuffers-none glDrawPixels')
diff --git a/tests/spec/arb_framebuffer_object/fbo-drawbuffers-none.c b/tests/spec/arb_framebuffer_object/fbo-drawbuffers-none.c
index 10cc133..ee97247 100644
--- a/tests/spec/arb_framebuffer_object/fbo-drawbuffers-none.c
+++ b/tests/spec/arb_framebuffer_object/fbo-drawbuffers-none.c
@@ -107,6 +107,7 @@ static const char *fs_write_red =
 	"}\n";
 
 static const char *fs_template_write_different =
+	"%s \n"
 	"#define OUTVAR %s \n"
 	"void main() \n"
 	"{ \n"
@@ -124,13 +125,17 @@ static GLuint fb, prog_write_all_red, prog_write_all_different;
 static void
 create_shaders(void)
 {
+	bool fs_uses_out_variables = streq(test_name, "use_frag_out");
+
 	prog_write_all_red = piglit_build_simple_program_multiple_shaders(
 				GL_VERTEX_SHADER, vs,
 				GL_FRAGMENT_SHADER, fs_write_red,
 				0);
 
 	asprintf(&fs_write_different, fs_template_write_different,
-		 "gl_FragData");
+		 fs_uses_out_variables ?
+		 "#version 130 \nout vec4[4] color;" : "",
+		 fs_uses_out_variables ? "color" : "gl_FragData");
 
 	prog_write_all_different = piglit_build_simple_program_multiple_shaders(
 				GL_VERTEX_SHADER, vs,
@@ -267,6 +272,16 @@ test_fragcolor(const GLenum drawbufs[4])
 }
 
 static bool
+test_fragout(const GLenum drawbufs[4])
+{
+	glUseProgram(prog_write_all_different);
+	piglit_draw_rect(-1, -1, 2, 2);
+	glUseProgram(0);
+
+	return probe_buffers(drawbufs, colors_all_different);
+}
+
+static bool
 test_fragdata(const GLenum drawbufs[4])
 {
 	glUseProgram(prog_write_all_different);
@@ -395,6 +410,7 @@ print_usage_and_exit(void)
 	       "    glClearBuffer\n"
 	       "    gl_FragColor\n"
 	       "    gl_FragData\n"
+	       "    use_frag_out\n"
 	       "    glColorMaskIndexed\n"
 	       "    glBlendFunci\n"
 	       "    glDrawPixels\n"
@@ -456,6 +472,10 @@ piglit_display(void)
 		else if (strcmp(test_name, "gl_FragData") == 0) {
 			pass = test_fragdata(drawbuf_config[i]) && pass;
 		}
+		else if (strcmp(test_name, "use_frag_out") == 0) {
+			piglit_require_GLSL_version(130);
+			pass = test_fragout(drawbuf_config[i]) && pass;
+		}
 		else if (strcmp(test_name, "glColorMaskIndexed") == 0) {
 			piglit_require_extension("GL_EXT_draw_buffers2");
 			pass = test_glColorMaskIndexed(drawbuf_config[i]) && pass;
-- 
1.8.3.1



More information about the Piglit mailing list