i965: Add support for GL_SKIP_DECODE_EXT on other SRGB formats.
authorEric Anholt <eric@anholt.net>
Mon, 30 Jul 2012 18:04:57 +0000 (11:04 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 31 Jul 2012 18:14:23 +0000 (11:14 -0700)
Fixes some failures in getteximage-formats.

v2: Remove stray include, and drop extra test for encoding == GL_SRGB --
    _mesa_get_srgb_format_linear() returns the same format if it wasn't SRGB.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48120
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (v1)
NOTE: This is a candidate for the 8.0 branch.

src/mesa/drivers/dri/i965/brw_wm_surface_state.c

index 8bb041078d8a59584a3f9beaafc2c52b47cda170..099668eae9ce351e69d447e4f43a658a1c27703d 100644 (file)
@@ -598,6 +598,9 @@ translate_tex_format(gl_format mesa_format,
                     GLenum depth_mode,
                     GLenum srgb_decode)
 {
+   if (srgb_decode == GL_SKIP_DECODE_EXT)
+      mesa_format = _mesa_get_srgb_format_linear(mesa_format);
+
    switch( mesa_format ) {
 
    case MESA_FORMAT_Z16:
@@ -613,14 +616,6 @@ translate_tex_format(gl_format mesa_format,
    case MESA_FORMAT_Z32_FLOAT_X24S8:
       return BRW_SURFACEFORMAT_R32G32_FLOAT;
 
-   case MESA_FORMAT_SARGB8:
-   case MESA_FORMAT_SLA8:
-   case MESA_FORMAT_SL8:
-      if (srgb_decode == GL_DECODE_EXT)
-        return brw_format_for_mesa_format(mesa_format);
-      else if (srgb_decode == GL_SKIP_DECODE_EXT)
-        return brw_format_for_mesa_format(_mesa_get_srgb_format_linear(mesa_format));
-
    case MESA_FORMAT_RGBA_FLOAT32:
       /* The value of this BRW_SURFACEFORMAT is 0, which tricks the
        * assertion below.