gallium: add VOTE_* opcodes to implement GL_ARB_shader_group_vote
authorIlia Mirkin <imirkin@alum.mit.edu>
Sun, 29 May 2016 15:01:05 +0000 (11:01 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Tue, 7 Jun 2016 00:49:28 +0000 (20:49 -0400)
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Dave Airlie <airlied@redhat.com>
src/gallium/auxiliary/tgsi/tgsi_info.c
src/gallium/docs/source/tgsi.rst
src/gallium/include/pipe/p_shader_tokens.h

index 847d420706a058fd9122bbf4d6b45878972f2161..60e0f2c59e0ec2826755420a9ba8fda7565ed065 100644 (file)
@@ -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 *
index ab12490fb5f9af2ac21bc523ce04c7c2493bccb1..bf094068e881da3bb4eee5c09d6c44975e39462c 100644 (file)
@@ -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
 ------------------------------
index b9d28fe458cc39aa7db01f0132b938396064ceac..abf26d3b4683d904c14f18d1e283b6112c935b27 100644 (file)
@@ -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