glsl: add texture gather changes

From: Maxence Le Dore <maxence.ledore@gmail.com>

V2 [Chris Forbes]:
   - Add new pattern, fixup parameter reading.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
i965: Enable ARB_texture_gather on Gen6+.

Gen6 can support ARB_texture_gather for single-component textures only;
Gen7 can support up to 4 components (plus the extra stuff from
ARB_gpu_shader5 someday).

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

Adds the Gen7 message IDs, a new SHADER_OPCODE_TG4 pseudo-op, and
low-level support for emitting it via generate_tex().

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
i965/fs: Add support for ir_tg4

Lowers ir_tg4 (from textureGather and textureGatherOffset builtins) to
SHADER_OPCODE_TG4.

The usual post-sampling swizzle workaround can't work for ir_tg4,
so avoid doing that:

* For R/G/B/A swizzles use the hardware channel select (lives in the
   same dword in the header as the texel offset), and then don't do
   anything afterward in the shader.
* For 0/1 swizzles blast the appropriate constant over all the output
   channels in swizzle_result().

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
i965/vs: Add support for ir_tg4

Pretty much the same as the FS case. Channel select goes in the header,
post-sampling swizzle only does the 0/1 cases.

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