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

Reply via email to