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.

V4: - Only emit alternate surface state for shaders which will actually
      use it.
    - Pass a simple 'for_gather' flag rather than a function pointer.
      The callee can decide what w/a to apply.

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 ARB_texture_gather on Gen7

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
i965/hsw: Apply gather4 RG32F w/a using SCS instead of shader.

The new surface channel select bits allow us to avoid having to
recompile the shader for this workaround.

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>
reduce gather offset limit for gen6