[Piglit] [PATCH 15/16] msaa/formats: Fix testing of sRGB formats.
Anuj Phogat
anuj.phogat at gmail.com
Fri Jun 22 13:34:05 PDT 2012
On Fri, Jun 15, 2012 at 8:32 AM, Paul Berry <stereotype441 at gmail.com> wrote:
> sRGB buffers use a different blending operation to do multisample
> resolves from non-sRGB buffers. Accordingly, when testing sRGB
> formats, we need to use an sRGB reference image. This patch modifies
> the MSAA "formats" test so that when testing an sRGB format, it
> renders the reference image using SRGB8_ALPHA8 format rather than RGBA
> format.
>
> This required rearranging the initialization order used in the test,
> so that the framebuffer under test is initialized first, so that we
> can query it to see whether it is sRGB before initializing the
> reference framebuffer.
> ---
> tests/spec/ext_framebuffer_multisample/formats.cpp | 44 +++++++++++++------
> 1 files changed, 30 insertions(+), 14 deletions(-)
>
> diff --git a/tests/spec/ext_framebuffer_multisample/formats.cpp b/tests/spec/ext_framebuffer_multisample/formats.cpp
> index d1e03e5..77a5dc1 100644
> --- a/tests/spec/ext_framebuffer_multisample/formats.cpp
> +++ b/tests/spec/ext_framebuffer_multisample/formats.cpp
> @@ -37,6 +37,10 @@
> *
> * Finally, the images that were compared are drawn on screen to make
> * it easier to diagnose failures.
> + *
> + * When testing sRGB formats, the reference image is rendered using
> + * SRGB8_ALPHA8 format rather than RGBA format (SRGB8_ALPHA8 format is
> + * also well tested by the other MSAA tests).
> */
>
> #include "common.h"
> @@ -83,6 +87,11 @@ public:
> GLenum component_type;
>
> /**
> + * True if the color buffer uses an sRGB format.
> + */
> + bool is_srgb;
> +
> + /**
> * ColorGradientSunburst object that will be used to draw the
> * test pattern.
> */
> @@ -163,6 +172,12 @@ PatternRenderer::try_setup(GLenum internalformat)
> piglit_report_result(PIGLIT_FAIL);
> }
>
> + GLint color_encoding;
> + glGetFramebufferAttachmentParameteriv(
> + GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
> + GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, &color_encoding);
> + is_srgb = color_encoding == GL_SRGB;
> +
> return true;
> }
>
> @@ -456,19 +471,6 @@ test_format(const struct format_desc *format)
>
> printf("Testing %s\n", format->name);
>
> - /* Set up the framebuffers for rendering the reference image.
> - * This shouldn't fail.
> - */
> - bool setup_success = ref_renderer.try_setup(GL_RGBA);
> - if (!piglit_check_gl_error(GL_NO_ERROR)) {
> - printf("Error setting up reference renderbuffers\n");
> - return PIGLIT_FAIL;
> - }
> - if (!setup_success) {
> - printf("Reference framebuffer combination is unsupported\n");
> - return PIGLIT_FAIL;
> - }
> -
> /* Set up the framebuffers for rendering the test image. This
> * might fail if the format we're testing isn't supported as a
> * render target, and that's ok.
> @@ -485,7 +487,7 @@ test_format(const struct format_desc *format)
> * supported, we might have received a GL error. In either
> * case just skip to the next format.
> */
> - setup_success = test_renderer.try_setup(format->internalformat);
> + bool setup_success = test_renderer.try_setup(format->internalformat);
> if (glGetError() != GL_NO_ERROR) {
> printf("Error setting up test renderbuffers\n");
> return PIGLIT_SKIP;
> @@ -495,6 +497,20 @@ test_format(const struct format_desc *format)
> return PIGLIT_SKIP;
> }
>
> + /* Set up the framebuffers for rendering the reference image.
> + * This shouldn't fail.
> + */
> + setup_success = ref_renderer.try_setup(test_renderer.is_srgb ?
> + GL_SRGB8_ALPHA8 : GL_RGBA);
> + if (!piglit_check_gl_error(GL_NO_ERROR)) {
> + printf("Error setting up reference renderbuffers\n");
> + return PIGLIT_FAIL;
> + }
> + if (!setup_success) {
> + printf("Reference framebuffer combination is unsupported\n");
> + return PIGLIT_FAIL;
> + }
> +
> /* Draw test and reference images, and read them into memory */
> test_renderer.set_piglit_tolerance();
> test_renderer.draw();
> --
> 1.7.7.6
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>
More information about the Piglit
mailing list