[Piglit] [PATCH 2/2] sample-mask-execution: resolve into fbo always
Anuj Phogat
anuj.phogat at gmail.com
Tue Dec 17 17:41:02 PST 2013
On Fri, Nov 29, 2013 at 5:45 PM, Chris Forbes <chrisf at ijw.co.nz> wrote:
> If the MSAA resolve happens into the default framebuffer, we don't get
> the colors we expect.
>
> Adjusts the test to resolve into an FBO first, and then blit the result
> to either the test FBO or the default framebuffer.
>
> Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
> ---
> .../sample-mask-execution.c | 27 ++++++++++++++++++----
> 1 file changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/tests/spec/arb_texture_multisample/sample-mask-execution.c b/tests/spec/arb_texture_multisample/sample-mask-execution.c
> index 2a6c2f8..58ec11f 100644
> --- a/tests/spec/arb_texture_multisample/sample-mask-execution.c
> +++ b/tests/spec/arb_texture_multisample/sample-mask-execution.c
> @@ -36,11 +36,16 @@ PIGLIT_GL_TEST_CONFIG_END
> * - set mask to the other half of the samples
> * - render a blue thing
> *
> - * - blit from the MSAA buffer to the winsys buffer
> + * - blit from the MSAA buffer to the single-sampled FBO
> + * - blit from the single-sampled FBO to the winsys buffer
> * - ensure that the pixels are yellow
> + *
> + * note the intermediate single-sampled FBO is only necessary so that
> + * the resolve is always happening FBO->FBO; if we resolve into a winsys
> + * buffer, there are sRGB interactions.
> */
>
> -GLuint fbo, tex;
> +GLuint fbo, ss_fbo, tex, ss_tex;
>
> enum piglit_result
> piglit_display(void)
> @@ -67,10 +72,16 @@ piglit_display(void)
> if (!piglit_check_gl_error(GL_NO_ERROR))
> piglit_report_result(PIGLIT_FAIL);
>
> - glFinish();
> + /* resolve */
> + glBindFramebuffer(GL_FRAMEBUFFER, ss_fbo);
Using GL_DRAW_FRAMEBUFFER makes it more clear.
> + glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo);
> + glBlitFramebuffer(0, 0, 64, 64, 0, 0, 64, 64,
> + GL_COLOR_BUFFER_BIT, GL_NEAREST);
>
> +
> + /* single-sampled blit */
> glBindFramebuffer(GL_FRAMEBUFFER, piglit_winsys_fbo);
> - glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo);
> + glBindFramebuffer(GL_READ_FRAMEBUFFER, ss_fbo);
> glBlitFramebuffer(0, 0, 64, 64, 0, 0, 64, 64,
> GL_COLOR_BUFFER_BIT, GL_NEAREST);
>
> @@ -125,4 +136,12 @@ piglit_init(int argc, char **argv)
> glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
> GL_RENDERBUFFER, tex);
> }
> +
> + glGenFramebuffers(1, &ss_fbo);
> + glBindFramebuffer(GL_FRAMEBUFFER, ss_fbo);
> + glGenRenderbuffers(1, &ss_tex);
As you're generating a renderbuffer, using a variable name ss_rb
is a better option.
> + glBindRenderbuffer(GL_RENDERBUFFER, ss_tex);
> + glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA, 64, 64);
> + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
> + GL_RENDERBUFFER, ss_tex);
> }
> --
> 1.8.4.2
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
Irrespective of what you decide about suggested changes, both the
patches are: Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>
More information about the Piglit
mailing list