[Mesa-dev] [PATCH 1/9] compiler: Add new system value SYSTEM_VALUE_BASE_VERTEX_ID

Kenneth Graunke kenneth at whitecape.org
Thu Nov 30 19:38:49 UTC 2017


On Friday, November 10, 2017 9:53:29 AM PST Antia Puentes wrote:
> This VS system value will contain the value passed as <basevertex>
> for indexed draw calls or the value passed as <first> for non-indexed
> draw calls. It will be used to calculate the gl_VertexID as
> SYSTEM_VALUE_VERTEX_ID_ZERO_BASE plus SYSTEM_VALUE_BASE_VERTEX_ID.
> Note that the current calculation which uses SYSTEM_VALUE_BASE_VERTEX
> is not right, as gl_BaseVertex should be zero for non-indexed calls.
> 
> Reviewed-by: Neil Roberts <nroberts at igalia.com>
> ---
>  src/compiler/shader_enums.c |  1 +
>  src/compiler/shader_enums.h | 15 +++++++++++++++
>  2 files changed, 16 insertions(+)
> 
> diff --git a/src/compiler/shader_enums.c b/src/compiler/shader_enums.c
> index b2ca80b49c2..cd8c256f227 100644
> --- a/src/compiler/shader_enums.c
> +++ b/src/compiler/shader_enums.c
> @@ -215,6 +215,7 @@ gl_system_value_name(gl_system_value sysval)
>       ENUM(SYSTEM_VALUE_INSTANCE_ID),
>       ENUM(SYSTEM_VALUE_INSTANCE_INDEX),
>       ENUM(SYSTEM_VALUE_VERTEX_ID_ZERO_BASE),
> +     ENUM(SYSTEM_VALUE_BASE_VERTEX_ID),
>       ENUM(SYSTEM_VALUE_BASE_VERTEX),
>       ENUM(SYSTEM_VALUE_BASE_INSTANCE),
>       ENUM(SYSTEM_VALUE_DRAW_ID),
> diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h
> index 9d229d4199e..7437cccdd0a 100644
> --- a/src/compiler/shader_enums.h
> +++ b/src/compiler/shader_enums.h
> @@ -474,6 +474,21 @@ typedef enum
>      */
>     SYSTEM_VALUE_BASE_VERTEX,
>  
> +
> +   /**
> +    * Depending on the type of the draw call (indexed or non-indexed),
> +    * is the value of \c basevertex passed to \c glDrawElementsBaseVertex and
> +    * similar, or is the value of \c first passed to \c glDrawArrays and
> +    * similar.
> +    *
> +    * \note
> +    * It can be used to calculate the \c SYSTEM_VALUE_VERTEX_ID as
> +    * \c SYSTEM_VALUE_VERTEX_ID_ZERO_BASE plus \c SYSTEM_VALUE_BASE_VERTEX_ID.
> +    *
> +    * \sa SYSTEM_VALUE_VERTEX_ID_ZERO_BASE, SYSTEM_VALUE_VERTEX_ID
> +    */
> +   SYSTEM_VALUE_BASE_VERTEX_ID,
> +

We have a number of similar names now:

   SYSTEM_VALUE_BASE_VERTEX
   SYSTEM_VALUE_BASE_VERTEX_ID
   SYSTEM_VALUE_VERTEX_ID
   SYSTEM_VALUE_VERTEX_ID_ZERO_BASE

BASE_VERTEX and BASE_VERTEX_ID are really similar names, and honestly
either one seems like it could be the name for gl_BaseVertex.  I'm
afraid it would be easy to mix them up by mistake.  IMHO, it would be
nice to pick a different word, just to keep some distinction between
the two fairly related concepts...

Perhaps SYSTEM_VALUE_FIRST_VERTEX...?  That's only half the meaning,
but it at least uses a different word, and makes you think "do I want
BASE_VERTEX or FIRST_VERTEX?"

>     /**
>      * Value of \c baseinstance passed to instanced draw entry points
>      *
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171130/867daeb1/attachment.sig>


More information about the mesa-dev mailing list