st/mesa: overhaul texture / sample swizzle code
authorBrian Paul <brianp@vmware.com>
Tue, 25 Mar 2014 17:04:40 +0000 (11:04 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 27 Mar 2014 15:45:25 +0000 (09:45 -0600)
commit12b959c351d81a35139ad0e504f6f6896077dbd0
treece315713903de0db66219fa19185020c7d0bd142
parent0151707cfc2aeaecf40670ad31075be7f991fb25
st/mesa: overhaul texture / sample swizzle code

Previously we only examined the GL_DEPTH_MODE state to determine the
sampler view swizzle for depth textures.  Now we also consider the
texture base format for color textures too.

The basic idea is if we're sampling from a RGB texture we always
want to get A=1, even if the actual hardware format might be RGBA.
We had assumed that the texture's A values were always one since that's
what Mesa's texstore code does.  But if we render to the RGBA texture,
the A values might not be 1.  Subsequent sampling didn't return the
right values.

Now we examine the user-specified texture base format vs. the actual
gallium format to determine the right swizzle.

Fixes several fbo-blending-formats, fbo-clear-formats and fbo-tex-rgbx
failures with VMware/svga driver (and possibly other drivers).
No other piglit regressions with softpipe or VMware/svga.

Reviewed-by: Marek Olšák <maraeo@gmail.com>
src/mesa/state_tracker/st_atom_texture.c