[Mesa-stable] [Mesa-dev] [PATCH 4/4] nir/spirv: Make gl_PrimitiveId a system value
Ilia Mirkin
imirkin at alum.mit.edu
Fri Nov 11 21:39:53 UTC 2016
On Fri, Nov 11, 2016 at 10:23 AM, Jason Ekstrand <jason at jlekstrand.net> wrote:
> On Nov 11, 2016 6:16 AM, "Ilia Mirkin" <imirkin at alum.mit.edu> wrote:
>>
>> I haven't checked spirv for the specific naming, but note that prim ID can
>> be an output in gs.
>
> You're right. I'm not 100% site how we handle that today. We probably just
> pass it through as a varying. It looks like the code here needs to be a bit
> more complex.
Based on some quick spec and vtn reading, you can just do
if (*mode == nir_var_shader_out) {
*location = VARYING_SLOT_PRIMITIVE_ID;
} else {
set_mode_system_value(mode);
*location = SYSTEM_VALUE_PRIMITIVE_ID;
}
Note that this will cause gl_PrimitiveID input to become a sysval in
*every* stage (i.e. TES, TCS, GS gl_PrimitiveIDIn, FS).
Cheers,
-ilia
>
>>
>> On Nov 11, 2016 1:34 AM, "Jason Ekstrand" <jason at jlekstrand.net> wrote:
>>>
>>> Before, we were treating it as an output which is just completely bogus.
>>> We could go for an input but a system value makes more sense.
>>>
>>> Cc: "13.0" <mesa-stable at lists.freedesktop.org>
>>> ---
>>> src/compiler/spirv/vtn_variables.c | 4 ++--
>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/src/compiler/spirv/vtn_variables.c
>>> b/src/compiler/spirv/vtn_variables.c
>>> index bbcca14..a4d5367 100644
>>> --- a/src/compiler/spirv/vtn_variables.c
>>> +++ b/src/compiler/spirv/vtn_variables.c
>>> @@ -806,8 +806,8 @@ vtn_get_builtin_location(struct vtn_builder *b,
>>> set_mode_system_value(mode);
>>> break;
>>> case SpvBuiltInPrimitiveId:
>>> - *location = VARYING_SLOT_PRIMITIVE_ID;
>>> - *mode = nir_var_shader_out;
>>> + *location = SYSTEM_VALUE_PRIMITIVE_ID;
>>> + set_mode_system_value(mode);
>>> break;
>>> case SpvBuiltInInvocationId:
>>> *location = SYSTEM_VALUE_INVOCATION_ID;
>>> --
>>> 2.5.0.400.gff86faf
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-stable
mailing list