summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnuj Phogat <anuj.phogat@gmail.com>2014-05-09 12:42:22 -0700
committerAnuj Phogat <anuj.phogat@gmail.com>2014-08-28 16:52:37 -0700
commita88f81d2684ac826e64f8d8856d470c3678161cf (patch)
treedbc13d1e834bd7ac41c059333ebe7a2d9c8e5c33
parent5d34f4f599fdda90ffd372c87fa5efbfa35c9c75 (diff)
piglit-fbo: Move color buffer initialization code in to separate functions
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@gmail.com>
-rw-r--r--tests/util/piglit-fbo.cpp100
-rw-r--r--tests/util/piglit-fbo.h3
2 files changed, 62 insertions, 41 deletions
diff --git a/tests/util/piglit-fbo.cpp b/tests/util/piglit-fbo.cpp
index a85d19db7..906fa559e 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 256410286..a58f2e80c 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,