i965: Emit a second set of SURFACE_STATE for gather4 from textures.

This allows us to use a different surface format for gather4, which is
required for R32G32_FLOAT to work on Gen7.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
i965: use gather slots in the binding table for gather4.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
i965: enable one component gather4 on gen6

Gen6 can do gather4, but with the following restrictions and caveats:

- Only one-component formats can be used.
- Only r/g result channels work for INT/UINT surfaces.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
i965 Gen6: w/a for int/uint gather4

The gather4 message only returns correct data for two of the texels. For
2D samplers (not cubes) we can do a pretty good w/a: issue a second
gather4 with a tweaked offset, and shuffle the other two texels into
place.

For cubes, we will have to do something else, since texel offsets are
not supported with that surface type.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>