[Piglit] [PATCH 11/20] msaa: Make a data structure for fbo config.

Paul Berry stereotype441 at gmail.com
Tue Jun 5 17:03:21 PDT 2012


This patch creates a data structure to contain the configuration
parameters passed to Fbo::init().  This allows obscure parameters
(attach_texture and combine_depth_stencil) to take on default values
in all tests except those that need to give them special treatment.
This will be especially important when future patches in the series
add more obscure configuration parameters.
---
 tests/spec/ext_framebuffer_multisample/common.cpp  |   70 ++++++++++---------
 tests/spec/ext_framebuffer_multisample/common.h    |   31 ++++++++-
 .../ext_framebuffer_multisample/line-smooth.cpp    |    4 +-
 .../multisample-blit.cpp                           |    8 +--
 .../ext_framebuffer_multisample/point-smooth.cpp   |    4 +-
 .../ext_framebuffer_multisample/polygon-smooth.cpp |    4 +-
 .../ext_framebuffer_multisample/unaligned-blit.cpp |    8 +--
 .../spec/ext_framebuffer_multisample/upsample.cpp  |    5 +-
 8 files changed, 75 insertions(+), 59 deletions(-)

diff --git a/tests/spec/ext_framebuffer_multisample/common.cpp b/tests/spec/ext_framebuffer_multisample/common.cpp
index 0ded77b..195d9c7 100644
--- a/tests/spec/ext_framebuffer_multisample/common.cpp
+++ b/tests/spec/ext_framebuffer_multisample/common.cpp
@@ -110,20 +110,24 @@
 
 #include "common.h"
 
-/**
- * \param attach_texture, if true, means to use a texture as color
- * attachment instead of a renderbuffer.
- */
+FboConfig::FboConfig(int num_samples, int width, int height)
+	: num_samples(num_samples),
+	  width(width),
+	  height(height),
+	  combine_depth_stencil(true),
+	  attach_texture(false)
+{
+}
+
 void
-Fbo::init(int num_samples, int width, int height, bool combine_depth_stencil,
-	  bool attach_texture)
+Fbo::init(const FboConfig &initial_config)
 {
 	generate();
-	this->width = width;
-	this->height = height;
-	this->combine_depth_stencil = combine_depth_stencil;
-	this->attach_texture = attach_texture;
-	set_samples(num_samples);
+	this->width = initial_config.width;
+	this->height = initial_config.height;
+	this->combine_depth_stencil = initial_config.combine_depth_stencil;
+	this->attach_texture = initial_config.attach_texture;
+	set_samples(initial_config.num_samples);
 }
 
 void
@@ -1041,28 +1045,28 @@ Test::init(int num_samples, bool small, bool combine_depth_stencil,
 	this->pattern_height = pattern_height;
 	this->supersample_factor = supersample_factor;
 
-	test_fbo.init(0,
-		      small ? 16 : pattern_width,
-		      small ? 16 : pattern_height,
-		      combine_depth_stencil,
-		      false);
-
-	multisample_fbo.init(num_samples,
-			     small ? 16 : pattern_width,
-			     small ? 16 : pattern_height,
-			     combine_depth_stencil,
-			     false);
-	resolve_fbo.init(0,
-			 small ? 16 : pattern_width,
-			 small ? 16 : pattern_height,
-			 combine_depth_stencil,
-			 false);
-	supersample_fbo.init(0 /* num_samples */,
-			     1024, 1024, combine_depth_stencil, true);
-	downsample_fbo.init(0 /* num_samples */,
-			    1024 / supersample_factor,
-			    1024 / supersample_factor,
-			    combine_depth_stencil, false);
+	FboConfig test_fbo_config(0,
+				  small ? 16 : pattern_width,
+				  small ? 16 : pattern_height);
+	test_fbo_config.combine_depth_stencil = combine_depth_stencil;
+	test_fbo.init(test_fbo_config);
+
+	FboConfig multisample_fbo_config = test_fbo_config;
+	multisample_fbo_config.num_samples = num_samples;
+	multisample_fbo.init(multisample_fbo_config);
+
+	resolve_fbo.init(test_fbo_config);
+
+	FboConfig supersample_fbo_config = test_fbo_config;
+	supersample_fbo_config.width = 1024;
+	supersample_fbo_config.height = 1024;
+	supersample_fbo_config.attach_texture = true;
+	supersample_fbo.init(supersample_fbo_config);
+
+	FboConfig downsample_fbo_config = test_fbo_config;
+	downsample_fbo_config.width = 1024 / supersample_factor;
+	downsample_fbo_config.height = 1024 / supersample_factor;
+	downsample_fbo.init(downsample_fbo_config);
 
 	pattern->compile();
 	downsample_prog.compile(supersample_factor);
diff --git a/tests/spec/ext_framebuffer_multisample/common.h b/tests/spec/ext_framebuffer_multisample/common.h
index 1287fc0..23b0a40 100644
--- a/tests/spec/ext_framebuffer_multisample/common.h
+++ b/tests/spec/ext_framebuffer_multisample/common.h
@@ -38,6 +38,34 @@ enum test_type_enum {
 };
 
 /**
+ * Information needed to configure a framebuffer object for MSAA
+ * testing.
+ */
+class FboConfig
+{
+public:
+	FboConfig(int num_samples, int width, int height);
+
+	int num_samples;
+	int width;
+	int height;
+
+	/**
+	 * True if a single renderbuffer should be used as the backing
+	 * store for both the depth and stencil attachment points.
+	 * Defaults to true.
+	 */
+	bool combine_depth_stencil;
+
+	/**
+	 * True if a texture should be used as the backing store for
+	 * the color attachment point, false if a renderbuffer should
+	 * be used.  Defaults to false.
+	 */
+	bool attach_texture;
+};
+
+/**
  * Data structure representing one of the framebuffer objects used in
  * the test.
  *
@@ -48,8 +76,7 @@ enum test_type_enum {
 class Fbo
 {
 public:
-	void init(int num_samples, int width, int height,
-		  bool combine_depth_stencil, bool attach_texture);
+	void init(const FboConfig &initial_config);
 	void generate();
 	void set_samples(int num_samples);
 
diff --git a/tests/spec/ext_framebuffer_multisample/line-smooth.cpp b/tests/spec/ext_framebuffer_multisample/line-smooth.cpp
index c9d26fe..7a98276 100644
--- a/tests/spec/ext_framebuffer_multisample/line-smooth.cpp
+++ b/tests/spec/ext_framebuffer_multisample/line-smooth.cpp
@@ -87,9 +87,7 @@ piglit_init(int argc, char **argv)
 	test_pattern = new Lines();
 	test_pattern->compile();
 
-	test_fbo.init(num_samples, pattern_width, pattern_height,
-		      true /* combine_depth_stencil */,
-		      false /* attach_texture */);
+	test_fbo.init(FboConfig(num_samples, pattern_width, pattern_height));
 
 	glEnable (GL_BLEND);
 	glBlendFunc (GL_SRC_ALPHA_SATURATE, GL_ONE);
diff --git a/tests/spec/ext_framebuffer_multisample/multisample-blit.cpp b/tests/spec/ext_framebuffer_multisample/multisample-blit.cpp
index 602b52a..e0330e2 100644
--- a/tests/spec/ext_framebuffer_multisample/multisample-blit.cpp
+++ b/tests/spec/ext_framebuffer_multisample/multisample-blit.cpp
@@ -100,12 +100,8 @@ piglit_init(int argc, char **argv)
 	if (manifest_program)
 		manifest_program->compile();
 
-	src_fbo.init(num_samples, pattern_width, pattern_height,
-		     true /* combine_depth_stencil */,
-		     false /* attach_texture */);
-	dst_fbo.init(num_samples, pattern_width, pattern_height,
-		     true /* combine_depth_stencil */,
-		     false /* attach_texture */);
+	src_fbo.init(FboConfig(num_samples, pattern_width, pattern_height));
+	dst_fbo.init(FboConfig(num_samples, pattern_width, pattern_height));
 }
 
 enum piglit_result
diff --git a/tests/spec/ext_framebuffer_multisample/point-smooth.cpp b/tests/spec/ext_framebuffer_multisample/point-smooth.cpp
index 2fe4953..9298782 100644
--- a/tests/spec/ext_framebuffer_multisample/point-smooth.cpp
+++ b/tests/spec/ext_framebuffer_multisample/point-smooth.cpp
@@ -87,9 +87,7 @@ piglit_init(int argc, char **argv)
 	test_pattern = new Points();
 	test_pattern->compile();
 
-	test_fbo.init(num_samples, pattern_width, pattern_height,
-		      true /* combine_depth_stencil */,
-		      false /* attach_texture */);
+	test_fbo.init(FboConfig(num_samples, pattern_width, pattern_height));
 
 	/* Blending is required to test smooth points */
 	glEnable (GL_BLEND);
diff --git a/tests/spec/ext_framebuffer_multisample/polygon-smooth.cpp b/tests/spec/ext_framebuffer_multisample/polygon-smooth.cpp
index dc086a4..aa15d79 100644
--- a/tests/spec/ext_framebuffer_multisample/polygon-smooth.cpp
+++ b/tests/spec/ext_framebuffer_multisample/polygon-smooth.cpp
@@ -87,9 +87,7 @@ piglit_init(int argc, char **argv)
 	test_pattern = new Triangles();
 	test_pattern->compile();
 
-	ms_fbo.init(num_samples, pattern_width, pattern_height,
-		     true /* combine_depth_stencil */,
-		     false /* attach_texture */);
+	ms_fbo.init(FboConfig(num_samples, pattern_width, pattern_height));
 
 	/* Enable blending to test GL_POLYGON_SMOOTH */
 	glEnable (GL_BLEND);
diff --git a/tests/spec/ext_framebuffer_multisample/unaligned-blit.cpp b/tests/spec/ext_framebuffer_multisample/unaligned-blit.cpp
index 5d1f828..8179411 100644
--- a/tests/spec/ext_framebuffer_multisample/unaligned-blit.cpp
+++ b/tests/spec/ext_framebuffer_multisample/unaligned-blit.cpp
@@ -158,12 +158,8 @@ piglit_init(int argc, char **argv)
 	test_pattern->compile();
 	if (manifest_program)
 		manifest_program->compile();
-	src_fbo.init(src_samples, pattern_size, pattern_size,
-		     true /* combine_depth_stencil */,
-		     false /* attach_texture */);
-	dst_fbo.init(dst_samples, pattern_size, pattern_size,
-		     true /* combine_depth_stencil */,
-		     false /* attach_texture */);
+	src_fbo.init(FboConfig(src_samples, pattern_size, pattern_size));
+	dst_fbo.init(FboConfig(dst_samples, pattern_size, pattern_size));
 }
 
 enum piglit_result
diff --git a/tests/spec/ext_framebuffer_multisample/upsample.cpp b/tests/spec/ext_framebuffer_multisample/upsample.cpp
index 9ae4c9c..f6b0944 100644
--- a/tests/spec/ext_framebuffer_multisample/upsample.cpp
+++ b/tests/spec/ext_framebuffer_multisample/upsample.cpp
@@ -114,9 +114,8 @@ piglit_init(int argc, char **argv)
 	if (manifest_program)
 		manifest_program->compile();
 
-	multisample_fbo.init(num_samples, pattern_width, pattern_height,
-			     true /* combine_depth_stencil */,
-			     false /* attach_texture */);
+	multisample_fbo.init(FboConfig(num_samples, pattern_width,
+				       pattern_height));
 }
 
 enum piglit_result
-- 
1.7.7.6



More information about the Piglit mailing list