Mesa (master): tgsi: add SUBGROUP_* semantics
Nicolai Hähnle
nh at kemper.freedesktop.org
Wed Apr 5 13:33:01 UTC 2017
Module: Mesa
Branch: master
Commit: 08bd0aa507fae7259de06853cc60031331f75183
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=08bd0aa507fae7259de06853cc60031331f75183
Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date: Thu Feb 9 18:48:18 2017 -0500
tgsi: add SUBGROUP_* semantics
v2: add documentation (Nicolai)
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
Signed-off-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
---
src/gallium/auxiliary/tgsi/tgsi_strings.c | 7 ++++
src/gallium/docs/source/tgsi.rst | 51 ++++++++++++++++++++++++++++++
src/gallium/include/pipe/p_shader_tokens.h | 7 ++++
3 files changed, 65 insertions(+)
diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.c b/src/gallium/auxiliary/tgsi/tgsi_strings.c
index 85bb8d1727..26403508ec 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_strings.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_strings.c
@@ -99,6 +99,13 @@ const char *tgsi_semantic_names[TGSI_SEMANTIC_COUNT] =
"BASEINSTANCE",
"DRAWID",
"WORK_DIM",
+ "SUBGROUP_SIZE",
+ "SUBGROUP_INVOCATION",
+ "SUBGROUP_EQ_MASK",
+ "SUBGROUP_GE_MASK",
+ "SUBGROUP_GT_MASK",
+ "SUBGROUP_LE_MASK",
+ "SUBGROUP_LT_MASK",
};
const char *tgsi_texture_names[TGSI_TEXTURE_COUNT] =
diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst
index 9362d430f0..a9568a8298 100644
--- a/src/gallium/docs/source/tgsi.rst
+++ b/src/gallium/docs/source/tgsi.rst
@@ -3430,6 +3430,57 @@ For compute shaders, this semantic indicates the (x, y, z) coordinates of the
current thread inside of the block.
+TGSI_SEMANTIC_SUBGROUP_SIZE
+"""""""""""""""""""""""""""
+
+This semantic indicates the subgroup size for the current invocation. This is
+an integer of at most 64, as it indicates the width of lanemasks. It does not
+depend on the number of invocations that are active.
+
+
+TGSI_SEMANTIC_SUBGROUP_INVOCATION
+"""""""""""""""""""""""""""""""""
+
+The index of the current invocation within its subgroup.
+
+
+TGSI_SEMANTIC_SUBGROUP_EQ_MASK
+""""""""""""""""""""""""""""""
+
+A bit mask of ``bit index == TGSI_SEMANTIC_SUBGROUP_INVOCATION``, i.e.
+``1 << subgroup_invocation`` in arbitrary precision arithmetic.
+
+
+TGSI_SEMANTIC_SUBGROUP_GE_MASK
+""""""""""""""""""""""""""""""
+
+A bit mask of ``bit index >= TGSI_SEMANTIC_SUBGROUP_INVOCATION``, i.e.
+``((1 << (subgroup_size - subgroup_invocation)) - 1) << subgroup_invocation``
+in arbitrary precision arithmetic.
+
+
+TGSI_SEMANTIC_SUBGROUP_GT_MASK
+""""""""""""""""""""""""""""""
+
+A bit mask of ``bit index > TGSI_SEMANTIC_SUBGROUP_INVOCATION``, i.e.
+``((1 << (subgroup_size - subgroup_invocation - 1)) - 1) << (subgroup_invocation + 1)``
+in arbitrary precision arithmetic.
+
+
+TGSI_SEMANTIC_SUBGROUP_LE_MASK
+""""""""""""""""""""""""""""""
+
+A bit mask of ``bit index <= TGSI_SEMANTIC_SUBGROUP_INVOCATION``, i.e.
+``(1 << (subgroup_invocation + 1)) - 1`` in arbitrary precision arithmetic.
+
+
+TGSI_SEMANTIC_SUBGROUP_LT_MASK
+""""""""""""""""""""""""""""""
+
+A bit mask of ``bit index > TGSI_SEMANTIC_SUBGROUP_INVOCATION``, i.e.
+``(1 << subgroup_invocation) - 1`` in arbitrary precision arithmetic.
+
+
Declaration Interpolate
^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h
index 7e8b3caf23..a671121f10 100644
--- a/src/gallium/include/pipe/p_shader_tokens.h
+++ b/src/gallium/include/pipe/p_shader_tokens.h
@@ -199,6 +199,13 @@ enum tgsi_semantic {
TGSI_SEMANTIC_BASEINSTANCE,
TGSI_SEMANTIC_DRAWID,
TGSI_SEMANTIC_WORK_DIM, /**< opencl get_work_dim value */
+ TGSI_SEMANTIC_SUBGROUP_SIZE,
+ TGSI_SEMANTIC_SUBGROUP_INVOCATION,
+ TGSI_SEMANTIC_SUBGROUP_EQ_MASK,
+ TGSI_SEMANTIC_SUBGROUP_GE_MASK,
+ TGSI_SEMANTIC_SUBGROUP_GT_MASK,
+ TGSI_SEMANTIC_SUBGROUP_LE_MASK,
+ TGSI_SEMANTIC_SUBGROUP_LT_MASK,
TGSI_SEMANTIC_COUNT, /**< number of semantic values */
};
More information about the mesa-commit
mailing list