Reviewed-by: Marek Olšák <marek.ol...@amd.com> Marek
On Sun, Jul 6, 2014 at 7:02 AM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> > --- > > There's an accompanying patch based on ChrisF's unpublished series to add > interpolateAt* to mesa core that makes use of them, and a further couple of > patches which inmplement this on nvc0. > > With all that, nvc0 passes all the piglits in ChrisF's repo except for the > interpolateAtCentroid-flat one, which fails on the blob driver in exactly the > same way (and for a reason totally unrelated to these new opcodes). > > src/gallium/auxiliary/tgsi/tgsi_info.c | 4 ++++ > src/gallium/docs/source/tgsi.rst | 23 +++++++++++++++++++++++ > src/gallium/include/pipe/p_shader_tokens.h | 6 +++++- > 3 files changed, 32 insertions(+), 1 deletion(-) > > diff --git a/src/gallium/auxiliary/tgsi/tgsi_info.c > b/src/gallium/auxiliary/tgsi/tgsi_info.c > index e2c4e65..e24348f 100644 > --- a/src/gallium/auxiliary/tgsi/tgsi_info.c > +++ b/src/gallium/auxiliary/tgsi/tgsi_info.c > @@ -231,6 +231,10 @@ static const struct tgsi_opcode_info > opcode_info[TGSI_OPCODE_LAST] = > { 1, 1, 0, 0, 0, 0, COMP, "LSB", TGSI_OPCODE_LSB }, > { 1, 1, 0, 0, 0, 0, COMP, "IMSB", TGSI_OPCODE_IMSB }, > { 1, 1, 0, 0, 0, 0, COMP, "UMSB", TGSI_OPCODE_UMSB }, > + > + { 1, 1, 0, 0, 0, 0, OTHR, "INTERP_CENTROID", TGSI_OPCODE_INTERP_CENTROID > }, > + { 1, 2, 0, 0, 0, 0, OTHR, "INTERP_SAMPLE", TGSI_OPCODE_INTERP_SAMPLE }, > + { 1, 2, 0, 0, 0, 0, OTHR, "INTERP_OFFSET", TGSI_OPCODE_INTERP_OFFSET }, > }; > > const struct tgsi_opcode_info * > diff --git a/src/gallium/docs/source/tgsi.rst > b/src/gallium/docs/source/tgsi.rst > index 4213b4a..3f4f0e6 100644 > --- a/src/gallium/docs/source/tgsi.rst > +++ b/src/gallium/docs/source/tgsi.rst > @@ -1808,6 +1808,29 @@ This instruction replicates its result. > dst = \frac{src.x}{src.x \times src.x + src.y \times src.y + src.z \times > src.z + src.w \times src.w} > > > +Interpolation ISA > +^^^^^^^^^^^^^^^^^ > + > +The interpolation instructions allow an input to be interpolated in a > +different way than its declaration. This corresponds to the GLSL 4.00 > +interpolateAt* functions. The first argument of each of these must come from > +``TGSI_FILE_INPUT``. > + > +.. opcode:: INTERP_CENTROID - Interpolate at the centroid > + > + Interpolates the varying specified by src0 at the centroid > + > +.. opcode:: INTERP_SAMPLE - Interpolate at the specified sample > + > + Interpolates the varying specified by src0 at the sample id specified by > + src1.x (interpreted as an integer) > + > +.. opcode:: INTERP_OFFSET - Interpolate at the specified offset > + > + Interpolates the varying specified by src0 at the offset src1.xy from the > + pixel center (interpreted as floats) > + > + > .. _doubleopcodes: > > Double ISA > diff --git a/src/gallium/include/pipe/p_shader_tokens.h > b/src/gallium/include/pipe/p_shader_tokens.h > index e68258d..0d3ad6a 100644 > --- a/src/gallium/include/pipe/p_shader_tokens.h > +++ b/src/gallium/include/pipe/p_shader_tokens.h > @@ -477,7 +477,11 @@ struct tgsi_property_data { > #define TGSI_OPCODE_IMSB 190 > #define TGSI_OPCODE_UMSB 191 > > -#define TGSI_OPCODE_LAST 192 > +#define TGSI_OPCODE_INTERP_CENTROID 192 > +#define TGSI_OPCODE_INTERP_SAMPLE 193 > +#define TGSI_OPCODE_INTERP_OFFSET 194 > + > +#define TGSI_OPCODE_LAST 195 > > #define TGSI_SAT_NONE 0 /* do not saturate */ > #define TGSI_SAT_ZERO_ONE 1 /* clamp to [0,1] */ > -- > 1.8.5.5 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev