[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