From: Ilia Mirkin Date: Thu, 9 Feb 2017 23:48:18 +0000 (-0500) Subject: tgsi: add SUBGROUP_* semantics X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=08bd0aa507fae7259de06853cc60031331f75183;p=mesa.git tgsi: add SUBGROUP_* semantics v2: add documentation (Nicolai) Signed-off-by: Ilia Mirkin Signed-off-by: Nicolai Hähnle Reviewed-by: Marek Olšák --- 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 */ };