[Piglit] [PATCH 1/4] piglit-fbo: Move color buffer initialization code in to separate functions

Anuj Phogat anuj.phogat at gmail.com
Fri May 9 12:42:22 PDT 2014


This refactoring will make it easier to add the code for initializing
multiple renderbuffers / textures in following patches.

No functional changes in this patch.

Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
---
 tests/util/piglit-fbo.cpp | 100 +++++++++++++++++++++++++++-------------------
 tests/util/piglit-fbo.h   |   3 ++
 2 files changed, 62 insertions(+), 41 deletions(-)

diff --git a/tests/util/piglit-fbo.cpp b/tests/util/piglit-fbo.cpp
index a85d19d..906fa55 100644
--- a/tests/util/piglit-fbo.cpp
+++ b/tests/util/piglit-fbo.cpp
@@ -67,6 +67,62 @@ Fbo::generate_gl_objects(void)
 }
 
 void
+Fbo::attach_color_renderbuffer(const FboConfig &config)
+{
+	glBindRenderbuffer(GL_RENDERBUFFER, color_rb);
+	glRenderbufferStorageMultisample(GL_RENDERBUFFER,
+					 config.num_samples,
+					 config.color_internalformat,
+					 config.width,
+					 config.height);
+	glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER,
+				  GL_COLOR_ATTACHMENT0,
+				  GL_RENDERBUFFER, color_rb);
+}
+
+void
+Fbo::attach_color_texture(const FboConfig &config)
+{
+	glBindTexture(GL_TEXTURE_RECTANGLE, color_tex);
+	glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MIN_FILTER,
+			GL_NEAREST);
+	glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MAG_FILTER,
+			GL_NEAREST);
+	glTexImage2D(GL_TEXTURE_RECTANGLE,
+		     0 /* level */,
+		     config.color_internalformat,
+		     config.width,
+		     config.height,
+		     0 /* border */,
+		     config.color_format /* format */,
+		     GL_BYTE /* type */,
+		     NULL /* data */);
+	glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER,
+			       GL_COLOR_ATTACHMENT0,
+			       GL_TEXTURE_RECTANGLE,
+			       color_tex,
+			       0 /* level */);
+}
+
+void
+Fbo::attach_multisample_color_texture(const FboConfig &config)
+{
+	glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, color_tex);
+	glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE,
+				config.num_samples,
+				config.color_internalformat,
+				config.width,
+				config.height,
+				GL_TRUE /* fixed sample locations */);
+
+	glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER,
+			       GL_COLOR_ATTACHMENT0,
+			       GL_TEXTURE_2D_MULTISAMPLE,
+			       color_tex,
+			       0 /* level */);
+}
+
+void
 Fbo::set_samples(int num_samples)
 {
 	FboConfig new_config = this->config;
@@ -106,51 +162,13 @@ Fbo::try_setup(const FboConfig &new_config)
 	/* Color buffer */
 	if (config.color_internalformat != GL_NONE) {
 		if (!config.attach_texture) {
-			glBindRenderbuffer(GL_RENDERBUFFER, color_rb);
-			glRenderbufferStorageMultisample(GL_RENDERBUFFER,
-							 config.num_samples,
-							 config.color_internalformat,
-							 config.width,
-							 config.height);
-			glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER,
-						  GL_COLOR_ATTACHMENT0,
-						  GL_RENDERBUFFER, color_rb);
+			attach_color_renderbuffer(new_config);
 		} else if (config.num_samples == 0) {
+			attach_color_texture(new_config);
 			piglit_require_extension("GL_ARB_texture_rectangle");
-			glBindTexture(GL_TEXTURE_RECTANGLE, color_tex);
-			glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MIN_FILTER,
-					GL_NEAREST);
-			glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MAG_FILTER,
-					GL_NEAREST);
-			glTexImage2D(GL_TEXTURE_RECTANGLE,
-				     0 /* level */,
-				     config.color_internalformat,
-				     config.width,
-				     config.height,
-				     0 /* border */,
-				     config.color_format /* format */,
-				     GL_BYTE /* type */,
-				     NULL /* data */);
-			glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER,
-					       GL_COLOR_ATTACHMENT0,
-					       GL_TEXTURE_RECTANGLE,
-					       color_tex,
-					       0 /* level */);
 		} else {
 			piglit_require_extension("GL_ARB_texture_multisample");
-			glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, color_tex);
-			glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE,
-						config.num_samples,
-						config.color_internalformat,
-						config.width,
-						config.height,
-						GL_TRUE /* fixed sample locations */);
-
-			glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER,
-					       GL_COLOR_ATTACHMENT0,
-					       GL_TEXTURE_2D_MULTISAMPLE,
-					       color_tex,
-					       0 /* level */);
+			attach_multisample_color_texture(new_config);
 		}
 	}
 
diff --git a/tests/util/piglit-fbo.h b/tests/util/piglit-fbo.h
index 17acf4e..e225149 100644
--- a/tests/util/piglit-fbo.h
+++ b/tests/util/piglit-fbo.h
@@ -139,6 +139,9 @@ namespace piglit_util_fbo {
 
 	private:
 		void generate_gl_objects();
+		void attach_color_renderbuffer(const FboConfig &config);
+		void attach_color_texture(const FboConfig &config);
+		void attach_multisample_color_texture(const FboConfig &config);
 
 		/**
 		 * True if generate_gl_objects has been called and color_tex,
-- 
1.8.3.1



More information about the Piglit mailing list