[Mesa-dev] [PATCH 1/3] gallium: add TGSI_PROPERTY_MUL_ZERO_WINS

Nicolai Hähnle nhaehnle at gmail.com
Mon Jan 16 15:59:11 UTC 2017


I guess doing this makes sense even while the GL extension discussion is 
stalled because of these wacky hardware differences.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

On 15.01.2017 19:36, Ilia Mirkin wrote:
> This will be useful for proper D3D9 emulation, where this behavior is
> expected by some shaders.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>  src/gallium/auxiliary/tgsi/tgsi_strings.c  |  3 ++-
>  src/gallium/docs/source/tgsi.rst           | 14 ++++++++++++--
>  src/gallium/include/pipe/p_shader_tokens.h |  1 +
>  3 files changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.c b/src/gallium/auxiliary/tgsi/tgsi_strings.c
> index 536a4c8..cebc1b4 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_strings.c
> +++ b/src/gallium/auxiliary/tgsi/tgsi_strings.c
> @@ -148,7 +148,8 @@ const char *tgsi_property_names[TGSI_PROPERTY_COUNT] =
>     "NEXT_SHADER",
>     "CS_FIXED_BLOCK_WIDTH",
>     "CS_FIXED_BLOCK_HEIGHT",
> -   "CS_FIXED_BLOCK_DEPTH"
> +   "CS_FIXED_BLOCK_DEPTH",
> +   "MUL_ZERO_WINS",
>  };
>
>  const char *tgsi_return_type_names[TGSI_RETURN_TYPE_COUNT] =
> diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst
> index 4d7ec90..4e71ea6 100644
> --- a/src/gallium/docs/source/tgsi.rst
> +++ b/src/gallium/docs/source/tgsi.rst
> @@ -3538,13 +3538,23 @@ Which shader stage will MOST LIKELY follow after this shader when the shader
>  is bound. This is only a hint to the driver and doesn't have to be precise.
>  Only set for VS and TES.
>
> -TGSI_PROPERTY_CS_FIXED_BLOCK_WIDTH / HEIGHT / DEPTH
> -"""""""""""""""""""""""""""""""""""""""""""""""""""
> +CS_FIXED_BLOCK_WIDTH / HEIGHT / DEPTH
> +"""""""""""""""""""""""""""""""""""""
>
>  Threads per block in each dimension, if known at compile time. If the block size
>  is known all three should be at least 1. If it is unknown they should all be set
>  to 0 or not set.
>
> +MUL_ZERO_WINS
> +"""""""""""""
> +
> +The MUL TGSI operation (FP32 multiplication) will return 0 if either
> +of the operands are equal to 0. That means that 0 * Inf = 0. This
> +should be set the same way for an entire pipeline. If there is a
> +mismatch between shaders, then it is unspecified whether this behavior
> +will be enabled.
> +
> +
>  Texture Sampling and Texture Formats
>  ------------------------------------
>
> diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h
> index f9b658d..27f842c 100644
> --- a/src/gallium/include/pipe/p_shader_tokens.h
> +++ b/src/gallium/include/pipe/p_shader_tokens.h
> @@ -290,6 +290,7 @@ enum tgsi_property_name {
>     TGSI_PROPERTY_CS_FIXED_BLOCK_WIDTH,
>     TGSI_PROPERTY_CS_FIXED_BLOCK_HEIGHT,
>     TGSI_PROPERTY_CS_FIXED_BLOCK_DEPTH,
> +   TGSI_PROPERTY_MUL_ZERO_WINS,
>     TGSI_PROPERTY_COUNT,
>  };
>
>


More information about the mesa-dev mailing list