[Mesa-dev] [PATCH 03/13] mesa: Add SYSTEM_VALUE_BASE_VERTEX

Roland Scheidegger sroland at vmware.com
Fri Aug 8 11:31:37 PDT 2014


Am 08.08.2014 20:06, schrieb Ian Romanick:
> On 08/08/2014 12:37 AM, Kenneth Graunke wrote:
>> On Friday, August 08, 2014 12:31:07 AM Kenneth Graunke wrote:
>>> From: Ian Romanick <ian.d.romanick at intel.com>
>>>
>>> This system value represents the basevertex value passed to
>>> glDrawElementsBaseVertex and related functions.
>>>
>>> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
>>> ---
>>>  src/mesa/main/mtypes.h                     | 15 ++++++++++++++-
>>>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp |  1 +
>>>  2 files changed, 15 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
>>> index c603007..99037c6 100644
>>> --- a/src/mesa/main/mtypes.h
>>> +++ b/src/mesa/main/mtypes.h
>>> @@ -2084,7 +2084,12 @@ typedef enum
>>>      * gl_VertexID gets basevertex added in.  This differs from DirectX where
>>>      * SV_VertexID does \b not get basevertex added in.
>>>      *
>>> -    * \sa SYSTEM_VALUE_VERTEX_ID_ZERO_BASE
>>> +    * \note
>>> +    * If all system values are available, \c SYSTEM_VALUE_VERTEX_ID will be
>>> +    * equal to \c SYSTEM_VALUE_VERTEX_ID_ZERO_BASE plus
>>> +    * \c SYSTEM_VALUE_BASE_VERTEX.
>>> +    *
>>> +    * \sa SYSTEM_VALUE_VERTEX_ID_ZERO_BASE, SYSTEM_VALUE_BASE_VERTEX
>>>      */
>>>     SYSTEM_VALUE_VERTEX_ID,
>>>  
>>> @@ -2126,6 +2131,14 @@ typedef enum
>>>      * \sa SYSTEM_VALUE_VERTEX_ID, SYSTEM_VALUE_BASE_VERTEX
>>>      */
>>>     SYSTEM_VALUE_VERTEX_ID_ZERO_BASE,
>>> +
>>> +   /**
>>> +    * Value of \c basevertex passed to \c glDrawElementsBaseVertex and similar
>>> +    * functions.
>>> +    *
>>> +    * \sa SYSTEM_VALUE_VERTEX_ID, SYSTEM_VALUE_VERTEX_ID_ZERO_BASE
>>> +    */
>>> +   SYSTEM_VALUE_BASE_VERTEX,
>>>     /*@}*/
>>
>> Ian,
>>
>> It occurred to me that we're sort of abusing this system value in
>> the i965 patches later in this series - we're using it to store
>> gl_BaseVertexARB, but also using it to store the "first" parameter
>> for glDrawArrays. I think in the glDrawArrays case, gl_BaseVertexARB
>> is supposed to be 0.
> 
> Yeah, you're right on all counts.  I sent some commentary on patch 7.
> Short version... we'll have to do some rework to support
> GL_ARB_shader_draw_parameters, but I think it's safe to leave this code
> as-is until we implement that other extension.
> 

So, are you saying the spec really meant the "first" parameter of Draw
calls does not count as "baseVertex"? That behavior would look very
inconsistent (and useless) to me.
gl_VertexId has similar language floating around ("gl_VertexID​ will
have the base vertex applied to it") and that was resolved to include
the first parameter of non-indexed draw too.

Roland



More information about the mesa-dev mailing list