summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian König <deathsimple@vodafone.de>2011-02-28 01:54:36 +0100
committerChristian König <deathsimple@vodafone.de>2011-02-28 02:19:39 +0100
commitbce4f9ac395986ee0acae2702ed73448333d81b8 (patch)
tree4b62e85bee6d4a483dc63066eff4f2a06d5e9cb4
parent0a17444133e74de7bc5d04d8ffc8f29b89f0cf58 (diff)
st/mesa & v_bug_mgr: two small instanced drawing fixes
-rw-r--r--src/gallium/auxiliary/util/u_vbuf_mgr.c5
-rw-r--r--src/mesa/state_tracker/st_draw.c2
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 dec8dd717e..3cf8ee0831 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 6530a06ade..c99eafbadf 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);
}
}