On 13/08/18 16:14, Jason Ekstrand wrote:
> I think this is ok.  The difference in implementation is a bit of an
> artifact of history.  When we were working on Vulkan 1.0, we wanted to
> make things consistent.  One suggestion for how to do that was to have
> Vertex/InstanceId which was zero-based and Vertex/InstanceIndex which
> included the base offset.  Then people decided that having two wasn't
> worth the bother so we threw out the ID variants and just kept the
> index variants.  In Vulkan VertexId and InstanceId have no meaning and
> are pretty much just reserved for GL at this point.
>
> On Mon, Aug 13, 2018 at 8:08 AM Alejandro Piñeiro
> <apinhe...@igalia.com <mailto:apinhe...@igalia.com>> wrote:
>
>     This is the only pending patch from this series, would appreciate a
>     review. As everything involving the VertexIndex/Id, it is somewhat
>     tricky. I'm CCing Kenneth too as he was involved on the OpenGL
>     mess with
>     gl_VertexId and similar.
>
>     FWIW, I already executed the Intel CI, and there are no regressions.
>
>
>     On 09/08/18 15:43, Alejandro Piñeiro wrote:
>     > From: Neil Roberts <nrobe...@igalia.com
>     <mailto:nrobe...@igalia.com>>
>     >
>     > GLSL has gl_VertexID which is supposed to be non-zero-based.
>     >
>     > SPIR-V has both VertexIndex and VertexId builtins whose meanings are
>     > defined by the APIs.
>     >
>     > Vulkan defines VertexIndex as being non-zero-based. I can’t find
>     > any mention of what VertexId is supposed to be.
>     >
>     > GL_ARB_spirv removes VertexIndex and defines VertexId to be the same
>     > as gl_VertexId (which is alo non-zero-based).
>     >
>     > Previously in Mesa it was treating VertexIndex as non-zero-based and
>     > VertexId as zero-based, so it was breaking for GL. This
>     behaviour was
>     > apparently based on Khronos bug 14255. However that bug doesn’t seem
>     > to have made a final decision for VertexId.
>     >
>     > Assuming there really is no other definition for VertexId for Vulkan
>     > it seems better to just make them both have the same
>     > value.
>     > ---
>     >  src/compiler/spirv/vtn_variables.c | 15 ++++++++-------
>     >  1 file changed, 8 insertions(+), 7 deletions(-)
>     >
>     > diff --git a/src/compiler/spirv/vtn_variables.c
>     b/src/compiler/spirv/vtn_variables.c
>     > index 8dab86abd74..b92bda59828 100644
>     > --- a/src/compiler/spirv/vtn_variables.c
>     > +++ b/src/compiler/spirv/vtn_variables.c
>     > @@ -1011,15 +1011,16 @@ vtn_get_builtin_location(struct
>     vtn_builder *b,
>     >     case SpvBuiltInCullDistance:
>     >        *location = VARYING_SLOT_CULL_DIST0;
>     >        break;
>     > -   case SpvBuiltInVertexIndex:
>     > -      *location = SYSTEM_VALUE_VERTEX_ID;
>     > -      set_mode_system_value(b, mode);
>     > -      break;
>     >     case SpvBuiltInVertexId:
>     > -      /* Vulkan defines VertexID to be zero-based and reserves
>     the new
>     > -       * builtin keyword VertexIndex to indicate the
>     non-zero-based value.
>     > +   case SpvBuiltInVertexIndex:
>     > +      /* For whatever reason, both of these are defined in the
>     SPIR-V spec.
>     > +       * The Vulkan spec defines VertexIndex to be
>     non-zero-based and doesn’t
>     > +       * mention VertexId. The ARB_gl_spirv spec defines
>     VertexId to be the
>     > +       * same as gl_VertexID, which is non-zero-based, and removes
>     > +       * VertexIndex. Assuming there is no use for VertexId in
>     Vulkan yet, we
>     > +       * can just make them both be the same.
>
>
> I'd rewrite this comment more-or-less as follows:
>
> The Vulkan spec defines VertexIndex to be non-zero-based and doesn't
> allowe VertexId.  The ARB_gl_spirv spec defines VertexId to be the
> same as gl_VertexID, which is non-zer-based, and removes VertexIndex. 
> Since they're both defined to be non-zero-based, we use
> SYSTEM_VALUE_VERTEX_ID for both.
>
> With that,
>
> Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net
> <mailto:ja...@jlekstrand.net>>

Thanks for the explanation and quick review. Based on your explanation
at the top, and the updated comment, I also tweaked a little the git
commit message.

Just pushed the series.

Again, thanks.

>  
>
>     >         */
>     > -      *location = SYSTEM_VALUE_VERTEX_ID_ZERO_BASE;
>     > +      *location = SYSTEM_VALUE_VERTEX_ID;
>     >        set_mode_system_value(b, mode);
>     >        break;
>     >     case SpvBuiltInInstanceIndex:
>

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to