[Piglit] [PATCH 09/17] ext_framebuffer_multisample: color clear also against RGBA16F/32F

Topi Pohjolainen topi.pohjolainen at gmail.com
Tue Jul 18 19:16:34 UTC 2017


Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
---
 tests/spec/ext_framebuffer_multisample/clear.cpp | 31 ++++++++++++++++++------
 1 file changed, 23 insertions(+), 8 deletions(-)

diff --git a/tests/spec/ext_framebuffer_multisample/clear.cpp b/tests/spec/ext_framebuffer_multisample/clear.cpp
index cb6c2e1a6..cb3231928 100644
--- a/tests/spec/ext_framebuffer_multisample/clear.cpp
+++ b/tests/spec/ext_framebuffer_multisample/clear.cpp
@@ -77,9 +77,9 @@ namespace {
 
 const int pattern_width = 256; const int pattern_height = 256;
 
-Fbo multisampled_fbo;
 ManifestProgram *manifest_program = NULL;
 GLbitfield buffer_to_test;
+int num_samples;
 
 
 void
@@ -103,7 +103,7 @@ piglit_init(int argc, char **argv)
 
 	/* 1st arg: num_samples */
 	char *endptr = NULL;
-	int num_samples = strtol(argv[1], &endptr, 0);
+	num_samples = strtol(argv[1], &endptr, 0);
 	if (endptr != argv[1] + strlen(argv[1]))
 		print_usage_and_exit(argv[0]);
 
@@ -130,8 +130,6 @@ piglit_init(int argc, char **argv)
 	if (num_samples > max_samples)
 		piglit_report_result(PIGLIT_SKIP);
 
-	multisampled_fbo.setup(FboConfig(GL_RGBA, num_samples, pattern_width,
-					 pattern_height));
 	if (manifest_program)
 		manifest_program->compile();
 
@@ -142,10 +140,15 @@ piglit_init(int argc, char **argv)
 
 bool
 test_clear(const float r, const float g, const float b,
-	   const float a, const bool fast_clear_compatible)
+	   const float a, const bool fast_clear_compatible,
+	   GLenum color_internal_format)
 {
 	bool pass = true;
 
+	Fbo multisampled_fbo;
+	multisampled_fbo.setup(FboConfig(color_internal_format, num_samples,
+					 pattern_width, pattern_height));
+
 	/* Clear all buffers of the multisampled fbo to default values
 	 * (color={0,0,0,0}, depth=1, stencil=0), with no special
 	 * coverage settings set.
@@ -257,16 +260,28 @@ test_clear(const float r, const float g, const float b,
 extern "C" enum piglit_result
 piglit_display()
 {
-	bool pass =true;
+	bool pass;
 
 	/* Non 'fast clear' path. */
-	pass = test_clear(1.0, 1.0, 1.0, 0.5, false) && pass;
+	if (buffer_to_test == GL_COLOR_BUFFER_BIT) {
+		pass = test_clear(1.0, 1.0, 1.0, 0.5, false, GL_RGBA);
+		pass &= test_clear(1.0, 1.0, 1.0, 0.5, false, GL_RGBA16F);
+		pass &= test_clear(1.0, 1.0, 1.0, 0.5, false, GL_RGBA32F);
+	} else {
+		pass = test_clear(1.0, 1.0, 1.0, 0.5, false, GL_RGBA);
+	}
 
 	/* Test with color values compatible with Intel's i965 driver's
 	 * 'fast clear' constraints. It varifies the 'fast clear' path
 	 * if supported by the implementation.
 	 */
-	pass = test_clear(1.0, 1.0, 1.0, 0.0, true) && pass;
+	if (buffer_to_test == GL_COLOR_BUFFER_BIT) {
+		pass &= test_clear(1.0, 1.0, 1.0, 0.0, true, GL_RGBA);
+		pass &= test_clear(1.0, 1.0, 1.0, 0.0, true, GL_RGBA16F);
+		pass &= test_clear(1.0, 1.0, 1.0, 0.0, true, GL_RGBA32F);
+	} else {
+		pass &= test_clear(1.0, 1.0, 1.0, 0.0, true, GL_RGBA);
+	}
 
 	return pass ? PIGLIT_PASS : PIGLIT_FAIL;
 }
-- 
2.11.0



More information about the Piglit mailing list