On 02/27/2011 05:20 PM, Christian König wrote:
Module: Mesa
Branch: master
Commit: bce4f9ac395986ee0acae2702ed73448333d81b8
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=bce4f9ac395986ee0acae2702ed73448333d81b8

Author: Christian König<deathsim...@vodafone.de>
Date:   Mon Feb 28 01:54:36 2011 +0100

st/mesa&  v_bug_mgr: two small instanced drawing fixes

---

  src/gallium/auxiliary/util/u_vbuf_mgr.c |    5 ++++-
  src/mesa/state_tracker/st_draw.c        |    2 ++
  2 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_vbuf_mgr.c 
b/src/gallium/auxiliary/util/u_vbuf_mgr.c
index dec8dd7..3cf8ee0 100644
--- a/src/gallium/auxiliary/util/u_vbuf_mgr.c
+++ b/src/gallium/auxiliary/util/u_vbuf_mgr.c
@@ -531,7 +531,10 @@ static void u_vbuf_upload_buffers(struct u_vbuf_mgr_priv 
*mgr,
           unsigned first, size;
           boolean flushed;

-         if (vb->stride) {
+         if (mgr->ve->ve[i].instance_divisor) {
+            first = 0;
+            size = vb->buffer->width0;
+         } else if (vb->stride) {
              first = vb->stride * min_index;
              size = vb->stride * count;
           } else {
diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
index 6530a06..c99eafb 100644
--- a/src/mesa/state_tracker/st_draw.c
+++ b/src/mesa/state_tracker/st_draw.c
@@ -579,6 +579,7 @@ st_validate_varrays(struct gl_context *ctx,
     if (is_interleaved_arrays(vp, vpv, arrays)) {
        setup_interleaved_attribs(ctx, vp, vpv, arrays, vbuffer, velements,
                                  max_index);
+
        num_vbuffers = 1;
        num_velements = vpv->num_inputs;
        if (num_velements == 0)
@@ -645,6 +646,7 @@ st_draw_vbo(struct gl_context *ctx,
        for (i = 0; i<  nr_prims; i++) {
           min_index = MIN2(min_index, prims[i].start);
           max_index = MAX2(max_index, prims[i].start + prims[i].count - 1);
+         max_index = MAX2(max_index, prims[i].num_instances);
        }
     }

I don't understand that last bit. If we're doing regular, non-instanced drawing, prims[i].num_instances will be 1. So max_index will always be one. That doesn't seem right.

-Brian

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to