From: Ilia Mirkin <imir...@alum.mit.edu> v2: add documentation (Nicolai)
Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> Signed-off-by: Nicolai Hähnle <nicolai.haeh...@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 d7201fc..19e5cea 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_strings.c +++ b/src/gallium/auxiliary/tgsi/tgsi_strings.c @@ -93,20 +93,27 @@ const char *tgsi_semantic_names[TGSI_SEMANTIC_COUNT] = "BASEVERTEX", "PATCH", "TESSCOORD", "TESSOUTER", "TESSINNER", "VERTICESIN", "HELPER_INVOCATION", "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] = { "BUFFER", "1D", "2D", "3D", "CUBE", "RECT", diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst index 7e9b47c..2adac3b 100644 --- a/src/gallium/docs/source/tgsi.rst +++ b/src/gallium/docs/source/tgsi.rst @@ -3422,20 +3422,71 @@ For compute shaders, this semantic indicates the maximum (x, y, z) dimensions of a block in threads. TGSI_SEMANTIC_THREAD_ID """"""""""""""""""""""" 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 ^^^^^^^^^^^^^^^^^^^^^^^ This token is only valid for fragment shader INPUT declarations. The Interpolate field specifes the way input is being interpolated by the rasteriser and is one of TGSI_INTERPOLATE_*. The Location field specifies the location inside the pixel that the interpolation should be done at, one of ``TGSI_INTERPOLATE_LOC_*``. Note that diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h index d461f78..dbab23c 100644 --- a/src/gallium/include/pipe/p_shader_tokens.h +++ b/src/gallium/include/pipe/p_shader_tokens.h @@ -193,20 +193,27 @@ enum tgsi_semantic { TGSI_SEMANTIC_BASEVERTEX, TGSI_SEMANTIC_PATCH, /**< generic per-patch semantic */ TGSI_SEMANTIC_TESSCOORD, /**< coordinate being processed by tess */ TGSI_SEMANTIC_TESSOUTER, /**< outer tessellation levels */ TGSI_SEMANTIC_TESSINNER, /**< inner tessellation levels */ TGSI_SEMANTIC_VERTICESIN, /**< number of input vertices */ TGSI_SEMANTIC_HELPER_INVOCATION, /**< current invocation is helper */ 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 */ }; struct tgsi_declaration_semantic { unsigned Name : 8; /**< one of TGSI_SEMANTIC_x */ unsigned Index : 16; /**< UINT */ unsigned StreamX : 2; /**< vertex stream (for GS output) */ unsigned StreamY : 2; unsigned StreamZ : 2; -- 2.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev