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

Ilia Mirkin imirkin at alum.mit.edu
Mon Jan 16 15:54:46 UTC 2017


Yeah, Axel also asked for a cap. I tend to agree. I just didn't want
to have two outstanding changes to add caps, since they'd conflict
with each other. (My advanced blend series also adds a cap for
FBFETCH.) Once that lands, I can resend adding a cap for this.

On Mon, Jan 16, 2017 at 10:51 AM, Roland Scheidegger <sroland at vmware.com> wrote:
> I think you'd also want a cap bit - I don't think it's reasonable to
> expect all drivers to implement this (e.g. I really don't feel like
> doing that for llvmpipe, there is no way to do that natively obviously),
> and I'd think it's better that it would be the fault of the st and not
> the driver if the bit isn't supported and noone feels like doing
> workarounds...
>
> Roland
>
> Am 15.01.2017 um 19:36 schrieb Ilia Mirkin:
>> 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