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 bri...@kemper.freedesktop.org is forwarded to
brian.p...@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.
-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev