gallium: add VOTE_* opcodes to implement GL_ARB_shader_group_vote
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -262,6 +262,9 @@ static const struct tgsi_opcode_info opcode_info[TGSI_OPCODE_LAST] =
|
||||
{ 1, 1, 0, 0, 0, 0, 0, COMP, "DFLR", TGSI_OPCODE_DFLR },
|
||||
{ 1, 1, 0, 0, 0, 0, 0, COMP, "DROUND", TGSI_OPCODE_DROUND },
|
||||
{ 1, 1, 0, 0, 0, 0, 0, COMP, "DSSG", TGSI_OPCODE_DSSG },
|
||||
{ 1, 1, 0, 0, 0, 0, 0, COMP, "VOTE_ANY", TGSI_OPCODE_VOTE_ANY },
|
||||
{ 1, 1, 0, 0, 0, 0, 0, COMP, "VOTE_ALL", TGSI_OPCODE_VOTE_ALL },
|
||||
{ 1, 1, 0, 0, 0, 0, 0, COMP, "VOTE_EQ", TGSI_OPCODE_VOTE_EQ },
|
||||
};
|
||||
|
||||
const struct tgsi_opcode_info *
|
||||
|
@@ -2557,6 +2557,23 @@ only be used with 32-bit integer image formats.
|
||||
resource[offset] = (dst_x > src_x ? dst_x : src_x)
|
||||
|
||||
|
||||
.. _voteopcodes:
|
||||
|
||||
Vote opcodes
|
||||
^^^^^^^^^^^^
|
||||
|
||||
These opcodes compare the given value across the shader invocations
|
||||
running in the current SIMD group. The details of exactly which
|
||||
invocations get compared are implementation-defined, and it would be a
|
||||
correct implementation to only ever consider the current thread's
|
||||
value. (i.e. SIMD group of 1). The argument is treated as a boolean.
|
||||
|
||||
.. opcode:: VOTE_ANY - Value is set in any of the current invocations
|
||||
|
||||
.. opcode:: VOTE_ALL - Value is set in all of the current invocations
|
||||
|
||||
.. opcode:: VOTE_EQ - Value is the same in all of the current invocations
|
||||
|
||||
|
||||
Explanation of symbols used
|
||||
------------------------------
|
||||
|
@@ -561,7 +561,12 @@ struct tgsi_property_data {
|
||||
#define TGSI_OPCODE_DFLR 220 /* nvc0 */
|
||||
#define TGSI_OPCODE_DROUND 221 /* nvc0 */
|
||||
#define TGSI_OPCODE_DSSG 222
|
||||
#define TGSI_OPCODE_LAST 223
|
||||
|
||||
#define TGSI_OPCODE_VOTE_ANY 223
|
||||
#define TGSI_OPCODE_VOTE_ALL 224
|
||||
#define TGSI_OPCODE_VOTE_EQ 225
|
||||
|
||||
#define TGSI_OPCODE_LAST 226
|
||||
|
||||
/**
|
||||
* Opcode is the operation code to execute. A given operation defines the
|
||||
|
Reference in New Issue
Block a user