diff options
author | Anuj Phogat <anuj.phogat@gmail.com> | 2014-05-09 12:42:22 -0700 |
---|---|---|
committer | Anuj Phogat <anuj.phogat@gmail.com> | 2014-08-28 16:52:37 -0700 |
commit | a88f81d2684ac826e64f8d8856d470c3678161cf (patch) | |
tree | dbc13d1e834bd7ac41c059333ebe7a2d9c8e5c33 | |
parent | 5d34f4f599fdda90ffd372c87fa5efbfa35c9c75 (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.cpp | 100 | ||||
-rw-r--r-- | 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 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, |