diff options
author | Ilia Mirkin <[email protected]> | 2017-02-09 18:48:18 -0500 |
---|---|---|
committer | Nicolai Hähnle <[email protected]> | 2017-04-05 15:29:41 +0200 |
commit | 08bd0aa507fae7259de06853cc60031331f75183 (patch) | |
tree | 6faa5ad97847b79f2f2165b28fd05e62d517bc42 /src/gallium | |
parent | 3650d7455fd467e1674888ecf4573756a82c9033 (diff) |
tgsi: add SUBGROUP_* semantics
v2: add documentation (Nicolai)
Signed-off-by: Ilia Mirkin <[email protected]>
Signed-off-by: Nicolai Hähnle <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_strings.c | 7 | ||||
-rw-r--r-- | src/gallium/docs/source/tgsi.rst | 51 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_shader_tokens.h | 7 |
3 files changed, 65 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.c b/src/gallium/auxiliary/tgsi/tgsi_strings.c index 85bb8d1727f..26403508ec5 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 9362d430f07..a9568a8298d 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 7e8b3caf23b..a671121f10f 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 */ }; |