nvc0/ir: fix encoding of offset register into interpolation instruction

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
nvc0/ir: handle sample-interpolated inputs

The centroid flag appears to mean "sample" when sample-shading, so we
have to add special support for centroid interpolation when in
per-sample shading mode.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
gallium: add INTERP_* opcodes to support interpolateAt*

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
nvc0/ir: add support for interpolating with non-default settings

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
allow builtin functions to require parameters to be shader inputs

The new interpolateAt* builtins have strange restrictions on the
<interpolant> parameter.

- It must be a shader input, or an element of a shader input array.
- It must not include a swizzle.

V2: Don't abuse ir_var_mode_shader_in for this; make a new flag.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
glsl: add new expression types for interpolateAt*

Will be used to implement interpolateAt*() from ARB_gpu_shader5

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
glsl: add new interpolateAt* builtin functions

V2: - Don't assume everyone wants interpolateAtSample() lowered to
      interpolateAtOffset. It turns out this isn't what we want most
      of the time for i965. Lowering can be added later in an ir pass
      which drivers opt into, rather than bolting it straight into the
      builtin definition.
    - Only expose the interpolateAt* builtins in the fragment language.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
mesa/st: add support for interpolate_at_* ops

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>