[Piglit] [PATCH 3/3] Test MSAA-to-MSAA blits in GL_LINEAR filter mode.

Paul Berry stereotype441 at gmail.com
Sun Oct 27 15:50:47 CET 2013


Since MSAA-to-MSAA blits require the source and destination rectangles
to be exactly the same size, GL_LINEAR and GL_NEAREST filtering should
be equivalent.  So just add an option to the "multisample-blit" test
that causes it to do a GL_LINEAR blit.
---
 tests/all.tests                                           | 11 ++++++++---
 .../spec/ext_framebuffer_multisample/multisample-blit.cpp | 15 +++++++++++++--
 2 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/tests/all.tests b/tests/all.tests
index 284440a..2dd3d6f 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -1730,10 +1730,15 @@ for num_samples in MSAA_SAMPLE_COUNTS:
 
 for num_samples in MSAA_SAMPLE_COUNTS:
     for buffer_type in ('color', 'depth', 'stencil'):
-        test_name = ' ' .join(['multisample-blit', str(num_samples), buffer_type])
-        executable = 'ext_framebuffer_multisample-{0} -auto'.format(
+        sensible_options = []
+        if buffer_type == 'color':
+            sensible_options.append('linear')
+        for options in power_set(sensible_options):
+            test_name = ' ' .join(['multisample-blit', str(num_samples),
+                                   buffer_type] + options)
+            executable = 'ext_framebuffer_multisample-{0} -auto'.format(
                 test_name)
-        ext_framebuffer_multisample[test_name] = PlainExecTest(executable)
+            ext_framebuffer_multisample[test_name] = PlainExecTest(executable)
 
 for num_samples in MSAA_SAMPLE_COUNTS:
     for buffer_type in ('color', 'depth', 'stencil'):
diff --git a/tests/spec/ext_framebuffer_multisample/multisample-blit.cpp b/tests/spec/ext_framebuffer_multisample/multisample-blit.cpp
index 9bfe4ab..e601fee 100644
--- a/tests/spec/ext_framebuffer_multisample/multisample-blit.cpp
+++ b/tests/spec/ext_framebuffer_multisample/multisample-blit.cpp
@@ -56,6 +56,7 @@ Fbo dst_fbo;
 TestPattern *test_pattern = NULL;
 ManifestProgram *manifest_program = NULL;
 GLbitfield buffer_to_test;
+GLenum filter_mode = GL_NEAREST;
 
 void
 print_usage_and_exit(char *prog_name)
@@ -64,7 +65,9 @@ print_usage_and_exit(char *prog_name)
 	       "  where <buffer_type> is one of:\n"
 	       "    color\n"
 	       "    stencil\n"
-	       "    depth\n",
+	       "    depth\n"
+	       "Available options:\n"
+	       "    linear: use GL_LINEAR filter mode\n",
 	       prog_name);
 	piglit_report_result(PIGLIT_FAIL);
 }
@@ -106,6 +109,14 @@ piglit_init(int argc, char **argv)
 	} else {
 		print_usage_and_exit(argv[0]);
 	}
+
+	for (int i = 3; i < argc; i++) {
+		if (strcmp(argv[i], "linear") == 0)
+			filter_mode = GL_LINEAR;
+		else
+			print_usage_and_exit(argv[0]);
+	}
+
 	test_pattern->compile();
 	if (manifest_program)
 		manifest_program->compile();
@@ -129,7 +140,7 @@ piglit_display()
 	glBindFramebuffer(GL_DRAW_FRAMEBUFFER, dst_fbo.handle);
 	glBlitFramebuffer(0, 0, pattern_width, pattern_height,
 			  0, 0, pattern_width, pattern_height,
-			  buffer_to_test, GL_NEAREST);
+			  buffer_to_test, filter_mode);
 
 	/* If necessary, manifest the depth/stencil image in dst_fbo
 	 * into a color image.  This ensures that the blit that
-- 
1.8.4.1



More information about the Piglit mailing list