diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gallium/auxiliary/util/u_vbuf_mgr.c | 5 | ||||
| -rw-r--r-- | 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 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);        }     } | 
