i965: Use swizzles to force alpha to 1.0 for RED, RG, or RGB textures.
authorCarl Worth <cworth@cworth.org>
Tue, 22 Jan 2013 21:25:37 +0000 (13:25 -0800)
committerCarl Worth <cworth@cworth.org>
Thu, 24 Jan 2013 01:40:52 +0000 (17:40 -0800)
commit33599433c75c0ab433615d08ed7e4002146ba462
treea6f92f6c8fe3ae05867e1e38ee9c2ecafa90780d
parent570ed2be7d776211e1ca2a7a4c44ee6a1d141714
i965: Use swizzles to force alpha to 1.0 for RED, RG, or RGB textures.

We may be using a texture with actual RGBA storage for these formats, so force
the alpha value read to 1.0.

This commit fixes the following piglit (sub) tests:

ARB_texture_float/fb-blending-formats
GL_RGB16F_ARB
EXT_framebuffer_object/fbo-blending-formats
                GL_RGB10
GL_RGB12
        GL_RGB16
EXT_texture_snorm/fbo-blending-formats
GL_RGB16_SNORM
GL_RGB8_SNORM
GL_RGB_SNORM

These test improvements depend on the previous commit as well. That commit
smashes alpha to 1.0 for the case of ReadPixels (so fixes "FBO testing" as
reported by this test), while this commit smashes alpha to 1.0 for the case of
texturing (fixed the "window testing" as reported by this test).

Note: Haswell bypasses this swizzle code, so may require an independent fix
for this bug.

Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_wm_surface_state.c