[Piglit] [PATCH 1/5] util: Add support for multisample array textures to the FBO framework

Anuj Phogat anuj.phogat at gmail.com
Mon Sep 21 13:50:12 PDT 2015


On Mon, Sep 21, 2015 at 8:57 AM, Ian Romanick <idr at freedesktop.org> wrote:
>
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
>  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
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit


Series is: Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>


More information about the Piglit mailing list