From: Ian Romanick <[email protected]>

Signed-off-by: Ian Romanick <[email protected]>
---
 tests/util/piglit-fbo.cpp | 43 ++++++++++++++++++++++++++++++-------------
 tests/util/piglit-fbo.h   | 18 ++++++++++++++++++
 2 files changed, 48 insertions(+), 13 deletions(-)

diff --git a/tests/util/piglit-fbo.cpp b/tests/util/piglit-fbo.cpp
index 49e9b26..bc705aa 100644
--- a/tests/util/piglit-fbo.cpp
+++ b/tests/util/piglit-fbo.cpp
@@ -37,6 +37,8 @@ FboConfig::FboConfig(int num_samples, int width, int height)
          num_tex_attachments(0),
          width(width),
          height(height),
+         layers(0),
+         attachment_layer(0),
          combine_depth_stencil(true),
          color_format(GL_RGBA),
          color_internalformat(GL_RGBA),
@@ -116,19 +118,34 @@ Fbo::attach_color_texture(const FboConfig &config, int 
index)
 void
 Fbo::attach_multisample_color_texture(const FboConfig &config, int index)
 {
-       glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, color_tex[index]);
-       glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE,
-                               config.num_samples,
-                               config.color_internalformat,
-                               config.width,
-                               config.height,
-                               GL_TRUE /* fixed sample locations */);
-
-       glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER,
-                              config.tex_attachment[index],
-                              GL_TEXTURE_2D_MULTISAMPLE,
-                              color_tex[index],
-                              0 /* level */);
+       if (config.layers == 0) {
+               glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, color_tex[index]);
+               glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE,
+                                       config.num_samples,
+                                       config.color_internalformat,
+                                       config.width,
+                                       config.height,
+                                       GL_TRUE /* fixed sample locations */);
+               glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER,
+                                      config.tex_attachment[index],
+                                      GL_TEXTURE_2D_MULTISAMPLE,
+                                      color_tex[index],
+                                      0 /* level */);
+       } else {
+               glBindTexture(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 
color_tex[index]);
+               glTexImage3DMultisample(GL_TEXTURE_2D_MULTISAMPLE_ARRAY,
+                                       config.num_samples,
+                                       config.color_internalformat,
+                                       config.width,
+                                       config.height,
+                                       config.layers,
+                                       GL_TRUE /* fixed sample locations */);
+               glFramebufferTextureLayer(GL_DRAW_FRAMEBUFFER,
+                                         config.tex_attachment[index],
+                                         color_tex[index],
+                                         0 /* level */,
+                                         config.attachment_layer);
+       }
 }
 
 void
diff --git a/tests/util/piglit-fbo.h b/tests/util/piglit-fbo.h
index b8ddaf8..8f956a4 100644
--- a/tests/util/piglit-fbo.h
+++ b/tests/util/piglit-fbo.h
@@ -51,6 +51,24 @@ namespace piglit_util_fbo {
                int height;
 
                /**
+                * If non-zero, GL_TEXTURE_2D_MULTISAMPLE_ARRAY is used with
+                * the specified number of layers instead of
+                * GL_TEXTURE_2D_MULTISAMPLE.
+                *
+                * Default value is zero.
+                */
+               unsigned layers;
+
+               /**
+                * Specifies the layer of the texture that should be attached
+                * to the framebuffer.  This must be less than the value of
+                * ::layers (unless ::layers is zero).
+                *
+                * Default value is zero.
+                */
+               unsigned attachment_layer;
+
+               /**
                 * True if a single renderbuffer should be used as the backing
                 * store for both the depth and stencil attachment points.
                 * Defaults to true.
-- 
2.1.0

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to