and replace the usage of 'attach_texture' in piglit tests with new method of specifying color attachments.
Old method: config.attach_texture = true; New method: config.num_rb_attachments = 0; config.num_tex_attachments = 1; Signed-off-by: Anuj Phogat <[email protected]> --- .../attachments-blit-scaled-linear.cpp | 6 +-- .../arb_framebuffer_object/blit-scaled-linear.cpp | 12 ++--- .../execution/builtin-gl-sample-id.cpp | 7 +-- .../execution/builtin-gl-sample-mask.cpp | 8 +-- .../execution/ignore-centroid-qualifier.cpp | 3 +- .../execution/interpolate-at-sample-position.cpp | 3 +- tests/spec/ext_framebuffer_multisample/common.cpp | 5 +- .../sample-coverage.cpp | 2 +- .../blit-scaled.cpp | 12 ++--- tests/util/piglit-fbo.cpp | 59 +++++++++++++--------- tests/util/piglit-fbo.h | 31 ++++++------ 11 files changed, 81 insertions(+), 67 deletions(-) diff --git a/tests/spec/arb_framebuffer_object/attachments-blit-scaled-linear.cpp b/tests/spec/arb_framebuffer_object/attachments-blit-scaled-linear.cpp index 4dc43da..0772faa 100644 --- a/tests/spec/arb_framebuffer_object/attachments-blit-scaled-linear.cpp +++ b/tests/spec/arb_framebuffer_object/attachments-blit-scaled-linear.cpp @@ -61,10 +61,10 @@ piglit_init(int argc, char **argv) * different color attachment types. */ FboConfig Config(0, pattern_width, pattern_height); - Config.attach_texture = true; - fbo_tex.setup(Config); - Config.attach_texture = false; fbo_rb.setup(Config); + Config.num_rb_attachments = 0; + Config.num_tex_attachments = 1; + fbo_tex.setup(Config); test_pattern = new Triangles(); test_pattern->compile(); diff --git a/tests/spec/arb_framebuffer_object/blit-scaled-linear.cpp b/tests/spec/arb_framebuffer_object/blit-scaled-linear.cpp index a656abe..7227c92 100644 --- a/tests/spec/arb_framebuffer_object/blit-scaled-linear.cpp +++ b/tests/spec/arb_framebuffer_object/blit-scaled-linear.cpp @@ -156,7 +156,7 @@ blit_scaled_linear_glsl(const Fbo *src_fbo, GLint samples) { 1, -1, srcX1, srcY0 }}; glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_RECTANGLE, src_fbo->color_tex); + glBindTexture(GL_TEXTURE_RECTANGLE, src_fbo->color_tex[0]); glUseProgram(prog); glBindVertexArray(vao); @@ -189,10 +189,10 @@ piglit_init(int argc, char **argv) * different color attachment types. */ FboConfig Config(0, pattern_width / 2, pattern_height / 2); - Config.attach_texture = true; - fbo_tex.setup(Config); - Config.attach_texture = false; fbo_rb.setup(Config); + Config.num_rb_attachments = 0; + Config.num_tex_attachments = 1; + fbo_tex.setup(Config); test_pattern = new Triangles(); test_pattern->compile(); @@ -218,7 +218,7 @@ bool test_blit_scaled_linear(Fbo fbo_test) glClear(GL_COLOR_BUFFER_BIT); test_pattern->draw(TestPattern::no_projection); - if(!fbo_test.config.attach_texture) { + if(fbo_test.config.num_tex_attachments == 0) { /* Blit the framebuffer with texture attachment into the * framebuffer with renderbuffer attachment. */ @@ -272,7 +272,7 @@ bool test_blit_scaled_linear(Fbo fbo_test) pass = result && pass; piglit_present_results(); printf("Attachment = %12s, scale = %f, result = %s\n", - fbo_test.config.attach_texture ? + fbo_test.config.num_tex_attachments > 0 ? "TEXTURE" : "RENDERBUFFER", scale, result ? "pass" : "fail"); diff --git a/tests/spec/arb_sample_shading/execution/builtin-gl-sample-id.cpp b/tests/spec/arb_sample_shading/execution/builtin-gl-sample-id.cpp index 5f2e143..739c685 100644 --- a/tests/spec/arb_sample_shading/execution/builtin-gl-sample-id.cpp +++ b/tests/spec/arb_sample_shading/execution/builtin-gl-sample-id.cpp @@ -147,7 +147,8 @@ piglit_init(int argc, char **argv) msConfig.color_internalformat = GL_RGBA8UI; multisampled_fbo.setup(msConfig); - msConfig.attach_texture = true; + msConfig.num_tex_attachments = 1; + msConfig.num_rb_attachments = 0; /* default value is 1 */ multisampled_tex.setup(msConfig); compile_shader(); @@ -169,7 +170,7 @@ bool test_builtin_sample_id(Fbo ms_fbo) glUniform1i(glGetUniformLocation(prog_0, "samples"), samples); piglit_draw_rect(-1, -1, 2, 2); - if(!ms_fbo.config.attach_texture) { + if(ms_fbo.config.num_tex_attachments == 0) { /* Blit the framebuffer with multisample renderbuffer attachment * into the framebuffer with multisample texture attachment. */ @@ -200,7 +201,7 @@ bool test_builtin_sample_id(Fbo ms_fbo) && result; piglit_present_results(); printf("FBO attachment = %s, result = %s\n", - ms_fbo.config.attach_texture ? + ms_fbo.config.num_tex_attachments > 0 ? "TEXTURE" : "RENDERBUFFER", result ? "pass" : "fail"); diff --git a/tests/spec/arb_sample_shading/execution/builtin-gl-sample-mask.cpp b/tests/spec/arb_sample_shading/execution/builtin-gl-sample-mask.cpp index 6585ab4..4f6667f 100644 --- a/tests/spec/arb_sample_shading/execution/builtin-gl-sample-mask.cpp +++ b/tests/spec/arb_sample_shading/execution/builtin-gl-sample-mask.cpp @@ -157,8 +157,8 @@ piglit_init(int argc, char **argv) FboConfig msConfig(num_samples, pattern_width, pattern_height); multisampled_fbo.setup(msConfig); - - msConfig.attach_texture = true; + msConfig.num_tex_attachments = 1; + msConfig.num_rb_attachments = 0; multisampled_tex.setup(msConfig); compile_shader(); @@ -181,7 +181,7 @@ test_builtin_sample_mask(Fbo ms_fbo) glUniform1i(glGetUniformLocation(prog_0, "samples"), samples); piglit_draw_rect(-1, -1, 2, 2); - if(!ms_fbo.config.attach_texture) { + if(ms_fbo.config.num_tex_attachments == 0) { /* Blit the framebuffer with multisample renderbuffer attachment * into the framebuffer with multisample texture attachment. */ @@ -212,7 +212,7 @@ test_builtin_sample_mask(Fbo ms_fbo) && result; piglit_present_results(); printf("FBO attachment = %s, result = %s\n", - ms_fbo.config.attach_texture ? + ms_fbo.config.num_tex_attachments > 0 ? "TEXTURE" : "RENDERBUFFER", result ? "pass" : "fail"); diff --git a/tests/spec/arb_sample_shading/execution/ignore-centroid-qualifier.cpp b/tests/spec/arb_sample_shading/execution/ignore-centroid-qualifier.cpp index cdcd9a0..caf4b2c 100644 --- a/tests/spec/arb_sample_shading/execution/ignore-centroid-qualifier.cpp +++ b/tests/spec/arb_sample_shading/execution/ignore-centroid-qualifier.cpp @@ -127,7 +127,8 @@ piglit_init(int argc, char**argv) piglit_report_result(PIGLIT_SKIP); FboConfig msConfig(num_samples, piglit_width, piglit_height); - msConfig.attach_texture = true; + msConfig.num_rb_attachments = 0; + msConfig.num_tex_attachments = 1; multisampled_fbo.setup(msConfig); /* Reduced tolerence for stricter color matching */ diff --git a/tests/spec/arb_sample_shading/execution/interpolate-at-sample-position.cpp b/tests/spec/arb_sample_shading/execution/interpolate-at-sample-position.cpp index 253606b..246e81b 100644 --- a/tests/spec/arb_sample_shading/execution/interpolate-at-sample-position.cpp +++ b/tests/spec/arb_sample_shading/execution/interpolate-at-sample-position.cpp @@ -126,7 +126,8 @@ piglit_init(int argc, char**argv) piglit_report_result(PIGLIT_SKIP); FboConfig msConfig(num_samples, piglit_width, piglit_height); - msConfig.attach_texture = true; + msConfig.num_rb_attachments = 0; + msConfig.num_tex_attachments = 1; multisampled_fbo.setup(msConfig); /* Reduced tolerence for stricter color matching */ diff --git a/tests/spec/ext_framebuffer_multisample/common.cpp b/tests/spec/ext_framebuffer_multisample/common.cpp index 8bd4e4c..95f3c6f 100644 --- a/tests/spec/ext_framebuffer_multisample/common.cpp +++ b/tests/spec/ext_framebuffer_multisample/common.cpp @@ -192,7 +192,7 @@ DownsampleProg::run(const Fbo *src_fbo, int dest_width, int dest_height, float h = dest_height; glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_RECTANGLE, src_fbo->color_tex); + glBindTexture(GL_TEXTURE_RECTANGLE, src_fbo->color_tex[0]); glUseProgram(prog); glBindVertexArray(vao); @@ -293,7 +293,8 @@ Test::init(int num_samples, bool small, bool combine_depth_stencil, 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_config.num_tex_attachments = 1; + supersample_fbo_config.num_rb_attachments = 0; supersample_fbo.setup(supersample_fbo_config); FboConfig downsample_fbo_config = test_fbo_config; diff --git a/tests/spec/ext_framebuffer_multisample/sample-coverage.cpp b/tests/spec/ext_framebuffer_multisample/sample-coverage.cpp index 2209619..91e7a89 100644 --- a/tests/spec/ext_framebuffer_multisample/sample-coverage.cpp +++ b/tests/spec/ext_framebuffer_multisample/sample-coverage.cpp @@ -397,7 +397,7 @@ piglit_init(int argc, char **argv) /* Query the number of samples used in ms_fbo. OpenGL implementation * may create FBO with more samples per pixel than what is requested. */ - glBindRenderbuffer(GL_RENDERBUFFER, ms_fbo.color_rb); + glBindRenderbuffer(GL_RENDERBUFFER, ms_fbo.color_rb[0]); glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_SAMPLES, &num_samples); diff --git a/tests/spec/ext_framebuffer_multisample_blit_scaled/blit-scaled.cpp b/tests/spec/ext_framebuffer_multisample_blit_scaled/blit-scaled.cpp index 6221e8c..d0ca1b4 100644 --- a/tests/spec/ext_framebuffer_multisample_blit_scaled/blit-scaled.cpp +++ b/tests/spec/ext_framebuffer_multisample_blit_scaled/blit-scaled.cpp @@ -215,7 +215,7 @@ ms_blit_scaled_glsl(const Fbo *src_fbo, GLint samples) { 1, -1, srcX1, srcY0 }}; glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, src_fbo->color_tex); + glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, src_fbo->color_tex[0]); glUseProgram(prog); glBindVertexArray(vao); @@ -267,10 +267,10 @@ piglit_init(int argc, char **argv) * but different color attachment types. */ FboConfig msConfig(num_samples, pattern_width, pattern_height); - msConfig.attach_texture = true; - multisampled_tex.setup(msConfig); - msConfig.attach_texture = false; multisampled_fbo.setup(msConfig); + msConfig.num_tex_attachments = 1; + msConfig.num_rb_attachments = 0; /* default value is 1 */ + multisampled_tex.setup(msConfig); test_pattern = new Triangles(); test_pattern->compile(); @@ -296,7 +296,7 @@ bool test_ms_blit_scaled(Fbo ms_fbo) glClear(GL_COLOR_BUFFER_BIT); test_pattern->draw(TestPattern::no_projection); - if(!ms_fbo.config.attach_texture) { + if(ms_fbo.config.num_tex_attachments == 0) { /* Blit the framebuffer with multisample texture attachment * into the framebuffer with multisample renderbuffer attachment. */ @@ -356,7 +356,7 @@ bool test_ms_blit_scaled(Fbo ms_fbo) GL_COLOR_BUFFER_BIT, GL_NEAREST); piglit_present_results(); printf("MS attachment = %24s, scale = %f, result = %s\n", - ms_fbo.config.attach_texture ? + ms_fbo.config.num_tex_attachments > 0 ? "MULTISAMPLE_TEXTURE" : "MULTISAMPLE_RENDERBUFFER", scale, result ? "pass" : "fail"); diff --git a/tests/util/piglit-fbo.cpp b/tests/util/piglit-fbo.cpp index 484c23f..49e9b26 100644 --- a/tests/util/piglit-fbo.cpp +++ b/tests/util/piglit-fbo.cpp @@ -38,7 +38,6 @@ FboConfig::FboConfig(int num_samples, int width, int height) width(width), height(height), combine_depth_stencil(true), - attach_texture(false), color_format(GL_RGBA), color_internalformat(GL_RGBA), depth_internalformat(GL_DEPTH_COMPONENT24), @@ -55,43 +54,45 @@ FboConfig::FboConfig(int num_samples, int width, int height) Fbo::Fbo() : config(0, 0, 0), /* will be overwritten on first call to setup() */ handle(0), - color_tex(0), - color_rb(0), depth_rb(0), stencil_rb(0), gl_objects_generated(false) { + memset(color_tex, 0, PIGLIT_MAX_COLOR_ATTACHMENTS * sizeof(GLuint)); + memset(color_rb, 0, PIGLIT_MAX_COLOR_ATTACHMENTS * sizeof(GLuint)); } void Fbo::generate_gl_objects(void) { + GLint max_color_attachments; + glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &max_color_attachments); glGenFramebuffers(1, &handle); - glGenTextures(1, &color_tex); - glGenRenderbuffers(1, &color_rb); + glGenTextures(max_color_attachments, color_tex); + glGenRenderbuffers(max_color_attachments, color_rb); glGenRenderbuffers(1, &depth_rb); glGenRenderbuffers(1, &stencil_rb); gl_objects_generated = true; } void -Fbo::attach_color_renderbuffer(const FboConfig &config) +Fbo::attach_color_renderbuffer(const FboConfig &config, int index) { - glBindRenderbuffer(GL_RENDERBUFFER, color_rb); + glBindRenderbuffer(GL_RENDERBUFFER, color_rb[index]); glRenderbufferStorageMultisample(GL_RENDERBUFFER, config.num_samples, config.color_internalformat, config.width, config.height); glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_RENDERBUFFER, color_rb); + config.rb_attachment[index], + GL_RENDERBUFFER, color_rb[index]); } void -Fbo::attach_color_texture(const FboConfig &config) +Fbo::attach_color_texture(const FboConfig &config, int index) { - glBindTexture(GL_TEXTURE_RECTANGLE, color_tex); + glBindTexture(GL_TEXTURE_RECTANGLE, color_tex[index]); glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MAG_FILTER, @@ -106,16 +107,16 @@ Fbo::attach_color_texture(const FboConfig &config) GL_BYTE /* type */, NULL /* data */); glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, + config.tex_attachment[index], GL_TEXTURE_RECTANGLE, - color_tex, + color_tex[index], 0 /* level */); } void -Fbo::attach_multisample_color_texture(const FboConfig &config) +Fbo::attach_multisample_color_texture(const FboConfig &config, int index) { - glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, color_tex); + glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, color_tex[index]); glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, config.num_samples, config.color_internalformat, @@ -124,9 +125,9 @@ Fbo::attach_multisample_color_texture(const FboConfig &config) GL_TRUE /* fixed sample locations */); glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, + config.tex_attachment[index], GL_TEXTURE_2D_MULTISAMPLE, - color_tex, + color_tex[index], 0 /* level */); } @@ -182,14 +183,24 @@ Fbo::try_setup(const FboConfig &new_config) /* Color buffer */ if (config.color_internalformat != GL_NONE) { - if (!config.attach_texture) { - attach_color_renderbuffer(new_config); - } else if (config.num_samples == 0) { - attach_color_texture(new_config); - piglit_require_extension("GL_ARB_texture_rectangle"); - } else { + + /* Attach renderbuffers as color attachments */ + for (int i = 0; i < config.num_rb_attachments; i++) + attach_color_renderbuffer(new_config, i); + + if (config.num_samples == 0) { + + /* Attach textures as color attachments */ piglit_require_extension("GL_ARB_texture_multisample"); - attach_multisample_color_texture(new_config); + for (int i = 0; i < config.num_tex_attachments; i++) + attach_color_texture(new_config, i); + + } else { + + /* Attach multisample textures as color attachments */ + piglit_require_extension("GL_ARB_texture_rectangle"); + for (int i = 0; i < config.num_tex_attachments; i++) + attach_multisample_color_texture(new_config, i); } } diff --git a/tests/util/piglit-fbo.h b/tests/util/piglit-fbo.h index 3be4f99..72fac72 100644 --- a/tests/util/piglit-fbo.h +++ b/tests/util/piglit-fbo.h @@ -58,18 +58,15 @@ namespace piglit_util_fbo { 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. + * Set color attachment points for color_tex[i] or color_rb[i]. + * Default value for color_tex[0] and color_rb[0] is + * GL_COLOR_ATTACHMENT0. */ - bool attach_texture; - - /* Set color attachments */ GLuint rb_attachment[PIGLIT_MAX_COLOR_ATTACHMENTS]; GLuint tex_attachment[PIGLIT_MAX_COLOR_ATTACHMENTS]; /** - * Useful if attach_texture is true and color buffer is + * Useful if num_tex_attachments > 0 and color buffer is * non-multisample. Specifies the format that should be used * for the color buffer, or GL_NONE if no color buffer should * be used. Defaults to GL_RGBA. @@ -123,16 +120,16 @@ namespace piglit_util_fbo { GLuint handle; /** - * If config.attach_texture is true, the backing store for the - * color buffer. + * If config.num_tex_attachments > 0, the backing store for the + * color buffers. */ - GLuint color_tex; + GLuint color_tex[PIGLIT_MAX_COLOR_ATTACHMENTS]; /** - * If config.attach_texture is false, the backing store for - * the color buffer. + * If config.num_rb_attachments > 0, the backing store for the + * color buffers. */ - GLuint color_rb; + GLuint color_rb[PIGLIT_MAX_COLOR_ATTACHMENTS]; /** * If config.combine_depth_stencil is true, the backing store @@ -150,9 +147,11 @@ 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); + void attach_color_renderbuffer(const FboConfig &config, + int index); + void attach_color_texture(const FboConfig &config, int index); + void attach_multisample_color_texture(const FboConfig &config, + int index); /** * True if generate_gl_objects has been called and color_tex, -- 1.8.3.1 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
