[Mesa-dev] Mesa (primitive-restart): 682 new commits

Brian Paul brianp at vmware.com
Thu Aug 12 06:41:17 PDT 2010


On 08/12/2010 07:37 AM, Keith Whitwell wrote:
> On Thu, 2010-08-12 at 06:28 -0700, Brian Paul wrote:
>> On 08/12/2010 07:16 AM, Keith Whitwell wrote:
>>> On Thu, 2010-08-12 at 06:08 -0700, Brian Paul wrote:
>>>> On 08/11/2010 09:40 PM, Luca Barbieri wrote:
>>>>> [Apparently brianp at kemper.freedesktop.org is forwarded to
>>>>> brian.paul at tungstengraphics.com, which is no longer valid.]
>>>>>
>>>>>     I'd suggest to put it in struct pipe_index_buffer.
>>>>>
>>>>>     The argument is that the index buffer needs to be prepared
>>>>>     specifically for the primitive restart enable setting:
>>>>>     1. If the index buffer has no restart indices, using primitive restart
>>>>>     will have no effect
>>>>>     2. If the index buffer has restart indices, not using primitive
>>>>>     restart will cause out-of-bounds accesses or weird rendering results
>>>>>
>>>>>     Also, the index size is there too, so there is no question of what
>>>>>     happens if the primitive restart index doesn't fit in the index size.
>>>>>
>>>>>     Currently the Mesa state tracker binds the index buffer for every draw
>>>>>     call, and thus would be unaffected (but it should stop doing that).
>>>>
>>>> The thing is, primitive restart also applies to non-indexed
>>>> primitives.  It would be a little weird to set index buffer state for
>>>> glDrawArrays calls.
>>>
>>> Wow, that's a pretty wierd case.  So if you set the primitive restart
>>> value to 32 then draw_arrays(TRISTRIP, 0, 64), you'll get two strips??
>>
>> Yup.  If one implements glDrawArrays() and glDrawElements() in terms
>> of glArrayElement() it kind of makes sense, but it's not too useful.
>> It would have been more useful for glDrawArrays() if the restart index
>> were periodic.  Then the primitive would be restarted after every N
>> vertices, rather than just one restart at i==N.
>
> This is really wierd, and afaik peculiar to GL.  It's also really easy
> to implement in the mesa state-tracker, just by checking for this state
> and splitting such primitives once.
>
> I think this is really something I'd prefer to keep out of gallium - I
> don't see any performance benefit of passing it down to the drivers, and
> I have doubts about whether people will bother implementing it...

Yeah, I was just thinking the same thing.

-Brian



More information about the mesa-dev mailing list