We need to reset the internal state of the so buffers or we'll
keep appending even though we're not supposed to.
Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
int i;
for (i = 0; i < num_targets; i++) {
pipe_so_target_reference((struct pipe_stream_output_target **)&llvmpipe->so_targets[i], targets[i]);
+ /* if we're not appending then lets reset the internal
+ data of our so target */
+ if (!(append_bitmask & (1 << i)) && llvmpipe->so_targets[i]) {
+ llvmpipe->so_targets[i]->internal_offset = 0;
+ llvmpipe->so_targets[i]->emitted_vertices = 0;
+ }
}
for (; i < llvmpipe->num_so_targets; i++) {