[Mesa-dev] [PATCH v2 2/3] gallium: add support for gl_HelperInvocation semantic
Glenn Kennard
glenn.kennard at gmail.com
Thu Nov 12 14:58:03 PST 2015
On Thu, 12 Nov 2015 18:32:25 +0100, Ilia Mirkin <imirkin at alum.mit.edu>
wrote:
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
> src/gallium/auxiliary/tgsi/tgsi_strings.c | 1 +
> src/gallium/docs/source/tgsi.rst | 8 ++++++++
> src/gallium/include/pipe/p_shader_tokens.h | 3 ++-
> src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 4 +++-
> 4 files changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.c
> b/src/gallium/auxiliary/tgsi/tgsi_strings.c
> index 89369d6..fc29a23 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_strings.c
> +++ b/src/gallium/auxiliary/tgsi/tgsi_strings.c
> @@ -95,6 +95,7 @@ const char *tgsi_semantic_names[TGSI_SEMANTIC_COUNT] =
> "TESSOUTER",
> "TESSINNER",
> "VERTICESIN",
> + "HELPER_INVOCATION",
> };
> 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 01e18f3..e7b0c2f 100644
> --- a/src/gallium/docs/source/tgsi.rst
> +++ b/src/gallium/docs/source/tgsi.rst
> @@ -2941,6 +2941,14 @@ TGSI_SEMANTIC_VERTICESIN
> For tessellation evaluation/control shaders, this semantic label
> indicates the
> number of vertices provided in the input patch. Only the X value is
> defined.
> +TGSI_SEMANTIC_HELPER_INVOCATION
> +"""""""""""""""""""""""""""""""
> +
> +For fragment shaders, this semantic indicates whether the current
> +invocation is covered or not. Helper invocations are created in order
> +to properly compute derivatives, however it may be desirable to skip
> +some of the logic in those cases. See ``gl_HelperInvocation``
> documentation.
> +
> Declaration Interpolate
> ^^^^^^^^^^^^^^^^^^^^^^^
> diff --git a/src/gallium/include/pipe/p_shader_tokens.h
> b/src/gallium/include/pipe/p_shader_tokens.h
> index e0ab901..a3137ae 100644
> --- a/src/gallium/include/pipe/p_shader_tokens.h
> +++ b/src/gallium/include/pipe/p_shader_tokens.h
> @@ -185,7 +185,8 @@ struct tgsi_declaration_interp
> #define TGSI_SEMANTIC_TESSOUTER 32 /**< outer tessellation levels */
> #define TGSI_SEMANTIC_TESSINNER 33 /**< inner tessellation levels */
> #define TGSI_SEMANTIC_VERTICESIN 34 /**< number of input vertices */
> -#define TGSI_SEMANTIC_COUNT 35 /**< number of semantic values */
> +#define TGSI_SEMANTIC_HELPER_INVOCATION 35 /**< current invocation is
> helper */
> +#define TGSI_SEMANTIC_COUNT 36 /**< number of semantic values */
> struct tgsi_declaration_semantic
> {
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index b565127..3ad1afd 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -4408,7 +4408,7 @@ const unsigned
> _mesa_sysval_to_semantic[SYSTEM_VALUE_MAX] = {
> TGSI_SEMANTIC_SAMPLEID,
> TGSI_SEMANTIC_SAMPLEPOS,
> TGSI_SEMANTIC_SAMPLEMASK,
> - 0, /* gl_HelperInvocation */
> + TGSI_SEMANTIC_HELPER_INVOCATION,
> /* Tessellation shaders
> */
> @@ -5139,6 +5139,8 @@ st_translate_program(
> TGSI_SEMANTIC_BASEVERTEX);
> assert(_mesa_sysval_to_semantic[SYSTEM_VALUE_TESS_COORD] ==
> TGSI_SEMANTIC_TESSCOORD);
> + assert(_mesa_sysval_to_semantic[SYSTEM_VALUE_HELPER_INVOCATION] ==
> + TGSI_SEMANTIC_HELPER_INVOCATION);
> t = CALLOC_STRUCT(st_translate);
> if (!t) {
Reviewed-by: Glenn Kennard <glenn.kennard at gmail.com>
More information about the mesa-dev
mailing list