i965: Override swizzles for integer luminance formats.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 6 Feb 2015 10:06:27 +0000 (02:06 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 9 Feb 2015 21:18:54 +0000 (13:18 -0800)
The hardware's integer luminance formats are completely unusable;
currently we fall back to RGBA.  This means we need to override
the texture swizzle to obtain the XXX1 values expected for luminance
formats.

Fixes spec/EXT_texture_integer/texwrap formats bordercolor [swizzled]
on Broadwell - 100% of border color tests now pass on Broadwell.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Cc: mesa-stable@lists.freedesktop.org
src/mesa/drivers/dri/i965/brw_wm_surface_state.c

index 6456a61ed2137de4c8eef169c8ef6385abe3797e..5f814029dc439ee4bfa1b24884668d5b763fd96a 100644 (file)
@@ -199,6 +199,14 @@ brw_get_texture_swizzle(const struct gl_context *ctx,
       swizzles[1] = SWIZZLE_ZERO;
       swizzles[2] = SWIZZLE_ZERO;
       break;
+   case GL_LUMINANCE:
+      if (t->_IsIntegerFormat) {
+         swizzles[0] = SWIZZLE_X;
+         swizzles[1] = SWIZZLE_X;
+         swizzles[2] = SWIZZLE_X;
+         swizzles[3] = SWIZZLE_ONE;
+      }
+      break;
    case GL_RED:
    case GL_RG:
    case GL_RGB: