msaa: Make meta-ops save and restore state of GL_MULTISAMPLE.
authorPaul Berry <stereotype441@gmail.com>
Wed, 27 Jun 2012 23:16:26 +0000 (16:16 -0700)
committerPaul Berry <stereotype441@gmail.com>
Mon, 2 Jul 2012 21:09:27 +0000 (14:09 -0700)
commitf34764ea5308221dc35479bd118142a0e249049c
tree6469ad49c221cc181280e6105aa601e2a66d6a05
parent8313f44409ceb733e9f8835926364164237b3111
msaa: Make meta-ops save and restore state of GL_MULTISAMPLE.

The meta-ops _mesa_meta_Clear() and _mesa_meta_glsl_Clear() need to
ignore the state of GL_SAMPLE_ALPHA_TO_COVERAGE,
GL_SAMPLE_ALPHA_TO_ONE, GL_SAMPLE_COVERAGE, GL_SAMPLE_COVERAGE_VALUE,
and GL_SAMPLE_COVERAGE_INVERT when clearing multisampled buffers.  The
easiest way to accomplish this is to disable GL_MULTISAMPLE during the
clear meta-ops.

Note: this patch also causes GL_MULTISAMPLE to be disabled during
_mesa_meta_GenerateMipmap() and _mesa_meta_GetTexImage() (since those
two meta-ops use MESA_META_ALL).  Arguably this isn't strictly
necessary, since those meta-ops use their own non-MSAA fbo's, but it
shouldn't do any harm.

Fixes Piglit tests "EXT_framebuffer_multisample/clear {2,4}
{color,stencil}" on i965.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
src/mesa/drivers/common/meta.c
src/mesa/drivers/common/meta.h