mesa: Ignore SRGB when determining compatible resolve formats.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 4 Sep 2012 18:29:30 +0000 (11:29 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 20 Sep 2012 21:47:23 +0000 (14:47 -0700)
MSAA resolves and other blit-like operations ignore SRGB state anyway,
so we should be able to safely allow resolves between compatible
SRGB/linear formats like SRGBA8 and RGBA8888.

This matches the behavior of the nVidia and AMD binary drivers.

Fixes completely black rendering when using multisampling in L4D2.

NOTE: This is a candidate for the 9.0 branch.

Reviewed-by: Paul Berry <stereotype441@gmail.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/main/fbobject.c

index 1736899cba15e924ada0e149438782350b4940b0..9cde52ae69050dcad54e7313c74abf3944ded11a 100644 (file)
@@ -2792,7 +2792,8 @@ compatible_resolve_formats(const struct gl_renderbuffer *colorReadRb,
 {
    /* The simple case where we know the backing formats are the same.
     */
-   if (colorReadRb->Format == colorDrawRb->Format) {
+   if (_mesa_get_srgb_format_linear(colorReadRb->Format) ==
+       _mesa_get_srgb_format_linear(colorDrawRb->Format)) {
       return GL_TRUE;
    }