[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