[Mesa-dev] [PATCH] compiler: add SYSTEM_VALUE_VARYING_COORD

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Mon Aug 20 22:54:24 UTC 2018


On Tue, Aug 21, 2018 at 12:38 AM, Marek Olšák <maraeo at gmail.com> wrote:
> On Fri, Aug 10, 2018 at 9:26 AM Rob Clark <robdclark at gmail.com> wrote:
>>
>> Used internally in freedreno/ir3 for the vec2 value that hw passes to
>> shader to use as coordinate for bary.f (varying fetch) instruction.
>> This is not the same as SYSTEM_VALUE_FRAG_COORD.
>>
>> Signed-off-by: Rob Clark <robdclark at gmail.com>
>> ---
>> Up until now, we'd been hard-coding the location of this value (ie. to
>> r0.xy), mostly because originally in the early a3xx days I didn't know
>> which bits could configure this value (blob was always using r0.xy so
>> in cmdstream traces it always showed up as 0's).
>>
>> But starting with a6xx, the address register aliases r0.x, which kinda
>> throws a monkey-wrench in the existing scheme of hard-coding.  The good
>> news is that I know the bits to configure this value for a3xx-a6xx.
>>
>> So I'm shifting over to handling this like a sysval.
>>
>>  src/compiler/shader_enums.c                | 1 +
>>  src/compiler/shader_enums.h                | 6 ++++++
>>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 1 +
>>  3 files changed, 8 insertions(+)
>>
>> diff --git a/src/compiler/shader_enums.c b/src/compiler/shader_enums.c
>> index a874083a0b7..0210b503d3f 100644
>> --- a/src/compiler/shader_enums.c
>> +++ b/src/compiler/shader_enums.c
>> @@ -244,6 +244,7 @@ gl_system_value_name(gl_system_value sysval)
>>       ENUM(SYSTEM_VALUE_DEVICE_INDEX),
>>       ENUM(SYSTEM_VALUE_VIEW_INDEX),
>>       ENUM(SYSTEM_VALUE_VERTEX_CNT),
>> +     ENUM(SYSTEM_VALUE_VARYING_COORD),
>>     };
>>     STATIC_ASSERT(ARRAY_SIZE(names) == SYSTEM_VALUE_MAX);
>>     return NAME(sysval);
>> diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h
>> index f8e22925f35..5c36f55283c 100644
>> --- a/src/compiler/shader_enums.h
>> +++ b/src/compiler/shader_enums.h
>> @@ -601,6 +601,12 @@ typedef enum
>>      */
>>     SYSTEM_VALUE_VERTEX_CNT,
>>
>> +   /**
>> +    * Driver internal varying-coord, used for varying-fetch instructions.
>> +    * Not externally visible.
>> +    */
>
> Can you improve the documentation, so that mere mortals understand
> what it means? Does it correspond to something in AMD hw?

I'd expect this to correspond to stuff like PERSP_CENTER on AMD?

Which begs the question, does this need distinguishing on
center/centroid/per-sample?

- Bas
>
> Marek
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list