On 14 December 2011 05:48, Marek Olšák <span dir="ltr"><<a href="mailto:maraeo@gmail.com">maraeo@gmail.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The strides are useful, although they can be computed by summing up<br>
all the NumComponents fields for each buffer. Note that I also take<br>
into account ARB_transform_feedback3, which allows having interleaved<br>
attribs in more than one buffer. For the EXT_transform_feedback case<br>
and separate attribs, BufferStride is really equal to NumComponents.<br>
<br>
I'd like to ask about something here.<br>
<br>
There is yet another property which can be computed from the other<br>
variables: the destination offsets. Assuming the outputs are supposed<br>
to be interleaved in one buffer, the offset is always 0 for the first<br>
output. The second output has an offset equal to<br>
Outputs[0].NumComponents. The third output has an offset equal to<br>
Outputs[0].NumComponents + Outputs[1].NumComponents, and so on. This<br>
will become more important when we start supporting<br>
ARB_transform_feedback3, which allows holes between attribs via<br>
gl_SkipComponents{1,2,3,4}. It would be useful for Radeons too,<br>
because r600g must already compute the offsets from NumComponents. So<br>
the structure for ARB_transform_feedback3 would look like:<br>
<br>
unsigned NumComponents;<br>
+ unsigned DstOffset;<br>
} Outputs[MAX_PROGRAM_OUTPUTS];<br>
<br>
Are you okay with this change as a way to express gl_SkipComponents?<br></blockquote><div><br>Yes, I like this idea very much. I'll work on it this morning and post a follow-up patch.<br></div></div>