From: Marek Olšák Date: Sun, 1 Jan 2012 18:11:25 +0000 (+0100) Subject: u_vbuf: take start_instance into account when uploading instanced attribs X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=dbd60d27e8087a3bacf36d4eceef15dc4fcdccee;p=mesa.git u_vbuf: take start_instance into account when uploading instanced attribs --- diff --git a/src/gallium/auxiliary/util/u_vbuf.c b/src/gallium/auxiliary/util/u_vbuf.c index 943336d8484..a7266136ebf 100644 --- a/src/gallium/auxiliary/util/u_vbuf.c +++ b/src/gallium/auxiliary/util/u_vbuf.c @@ -539,7 +539,7 @@ void u_vbuf_set_index_buffer(struct u_vbuf *mgr, static void u_vbuf_upload_buffers(struct u_vbuf_priv *mgr, int min_index, int max_index, - unsigned instance_count) + unsigned start_instance, unsigned instance_count) { unsigned i; unsigned count = max_index + 1 - min_index; @@ -577,6 +577,7 @@ u_vbuf_upload_buffers(struct u_vbuf_priv *mgr, } else if (instance_div) { /* Per-instance attrib. */ unsigned count = (instance_count + instance_div - 1) / instance_div; + first += vb->stride * start_instance; size = vb->stride * (count - 1) + mgr->ve->src_format_size[i]; } else { /* Per-vertex attrib. */ @@ -838,7 +839,8 @@ u_vbuf_draw_begin(struct u_vbuf *mgrb, /* Upload user buffers. */ if (mgr->any_user_vbs) { - u_vbuf_upload_buffers(mgr, min_index, max_index, info->instance_count); + u_vbuf_upload_buffers(mgr, min_index, max_index, + info->start_instance, info->instance_count); } return U_VBUF_BUFFERS_UPDATED; }