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

Reply via email to