gallium: add INTERP_* opcodes to support interpolateAt*
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
@@ -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, "LSB", TGSI_OPCODE_LSB },
|
||||||
{ 1, 1, 0, 0, 0, 0, COMP, "IMSB", TGSI_OPCODE_IMSB },
|
{ 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, 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 *
|
const struct tgsi_opcode_info *
|
||||||
|
@@ -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}
|
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:
|
.. _doubleopcodes:
|
||||||
|
|
||||||
Double ISA
|
Double ISA
|
||||||
|
@@ -477,7 +477,11 @@ struct tgsi_property_data {
|
|||||||
#define TGSI_OPCODE_IMSB 190
|
#define TGSI_OPCODE_IMSB 190
|
||||||
#define TGSI_OPCODE_UMSB 191
|
#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_NONE 0 /* do not saturate */
|
||||||
#define TGSI_SAT_ZERO_ONE 1 /* clamp to [0,1] */
|
#define TGSI_SAT_ZERO_ONE 1 /* clamp to [0,1] */
|
||||||
|
Reference in New Issue
Block a user