gallium/tgsi: Add support for barriers.
This commit is contained in:
@@ -201,6 +201,10 @@ static const struct tgsi_opcode_info opcode_info[TGSI_OPCODE_LAST] =
|
|||||||
{ 1, 1, 0, 0, 0, 0, COMP, "ISSG", TGSI_OPCODE_ISSG },
|
{ 1, 1, 0, 0, 0, 0, COMP, "ISSG", TGSI_OPCODE_ISSG },
|
||||||
{ 1, 2, 0, 0, 0, 0, OTHR, "LOAD", TGSI_OPCODE_LOAD },
|
{ 1, 2, 0, 0, 0, 0, OTHR, "LOAD", TGSI_OPCODE_LOAD },
|
||||||
{ 1, 2, 0, 0, 0, 0, OTHR, "STORE", TGSI_OPCODE_STORE },
|
{ 1, 2, 0, 0, 0, 0, OTHR, "STORE", TGSI_OPCODE_STORE },
|
||||||
|
{ 1, 0, 0, 0, 0, 0, OTHR, "MFENCE", TGSI_OPCODE_MFENCE },
|
||||||
|
{ 1, 0, 0, 0, 0, 0, OTHR, "LFENCE", TGSI_OPCODE_LFENCE },
|
||||||
|
{ 1, 0, 0, 0, 0, 0, OTHR, "SFENCE", TGSI_OPCODE_SFENCE },
|
||||||
|
{ 0, 0, 0, 0, 0, 0, OTHR, "BARRIER", TGSI_OPCODE_BARRIER }
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct tgsi_opcode_info *
|
const struct tgsi_opcode_info *
|
||||||
|
@@ -1514,6 +1514,55 @@ Resource Access Opcodes
|
|||||||
ignored.
|
ignored.
|
||||||
|
|
||||||
|
|
||||||
|
.. _threadsyncopcodes:
|
||||||
|
|
||||||
|
Inter-thread synchronization opcodes
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
These opcodes are intended for communication between threads running
|
||||||
|
within the same compute grid. For now they're only valid in compute
|
||||||
|
programs.
|
||||||
|
|
||||||
|
.. opcode:: MFENCE - Memory fence
|
||||||
|
|
||||||
|
Syntax: ``MFENCE resource``
|
||||||
|
|
||||||
|
Example: ``MFENCE RES[0]``
|
||||||
|
|
||||||
|
This opcode forces strong ordering between any memory access
|
||||||
|
operations that affect the specified resource. This means that
|
||||||
|
previous loads and stores (and only those) will be performed and
|
||||||
|
visible to other threads before the program execution continues.
|
||||||
|
|
||||||
|
|
||||||
|
.. opcode:: LFENCE - Load memory fence
|
||||||
|
|
||||||
|
Syntax: ``LFENCE resource``
|
||||||
|
|
||||||
|
Example: ``LFENCE RES[0]``
|
||||||
|
|
||||||
|
Similar to MFENCE, but it only affects the ordering of memory loads.
|
||||||
|
|
||||||
|
|
||||||
|
.. opcode:: SFENCE - Store memory fence
|
||||||
|
|
||||||
|
Syntax: ``SFENCE resource``
|
||||||
|
|
||||||
|
Example: ``SFENCE RES[0]``
|
||||||
|
|
||||||
|
Similar to MFENCE, but it only affects the ordering of memory stores.
|
||||||
|
|
||||||
|
|
||||||
|
.. opcode:: BARRIER - Thread group barrier
|
||||||
|
|
||||||
|
``BARRIER``
|
||||||
|
|
||||||
|
This opcode suspends the execution of the current thread until all
|
||||||
|
the remaining threads in the working group reach the same point of
|
||||||
|
the program. Results are unspecified if any of the remaining
|
||||||
|
threads terminates or never reaches an executed BARRIER instruction.
|
||||||
|
|
||||||
|
|
||||||
Explanation of symbols used
|
Explanation of symbols used
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
@@ -413,7 +413,12 @@ struct tgsi_property_data {
|
|||||||
#define TGSI_OPCODE_LOAD 161
|
#define TGSI_OPCODE_LOAD 161
|
||||||
#define TGSI_OPCODE_STORE 162
|
#define TGSI_OPCODE_STORE 162
|
||||||
|
|
||||||
#define TGSI_OPCODE_LAST 163
|
#define TGSI_OPCODE_MFENCE 163
|
||||||
|
#define TGSI_OPCODE_LFENCE 164
|
||||||
|
#define TGSI_OPCODE_SFENCE 165
|
||||||
|
#define TGSI_OPCODE_BARRIER 166
|
||||||
|
|
||||||
|
#define TGSI_OPCODE_LAST 167
|
||||||
|
|
||||||
#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