Mesa (master): llvmpipe: reset so buffers when not appending

Zack Rusin zack at kemper.freedesktop.org
Wed Apr 3 17:20:34 UTC 2013


Module: Mesa
Branch: master
Commit: 246e68735fe22b4d9f510f8fb1bb8b7bb448b068
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=246e68735fe22b4d9f510f8fb1bb8b7bb448b068

Author: Zack Rusin <zackr at vmware.com>
Date:   Sat Mar 30 00:21:03 2013 -0700

llvmpipe: reset so buffers when not appending

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 at vmware.com>
Reviewed-by: Brian Paul <brianp at vmware.com>
Reviewed-by: José Fonseca <jfonseca at vmware.com>

---

 src/gallium/drivers/llvmpipe/lp_state_so.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_state_so.c b/src/gallium/drivers/llvmpipe/lp_state_so.c
index 58bab39..fa58f79 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_so.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_so.c
@@ -70,6 +70,12 @@ llvmpipe_set_so_targets(struct pipe_context *pipe,
    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++) {




More information about the mesa-commit mailing list