summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2011-06-19 19:38:48 +0200
committerMarek Olšák <[email protected]>2011-06-19 21:09:18 +0200
commit0d58723cde31703f13f2e8e0747cde30b9e5d6de (patch)
treeada1ae714fffb0b614d76f2a2a914e3c2f4345c7 /src/gallium
parentdd3b812962a8720aca0a80bf6ea35f70319d3ca1 (diff)
u_vbuf_mgr: fix uploading if format size is greater than stride
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/auxiliary/util/u_vbuf_mgr.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/util/u_vbuf_mgr.c b/src/gallium/auxiliary/util/u_vbuf_mgr.c
index 04149525ea7..fdfa9fcca3d 100644
--- a/src/gallium/auxiliary/util/u_vbuf_mgr.c
+++ b/src/gallium/auxiliary/util/u_vbuf_mgr.c
@@ -537,6 +537,11 @@ static void u_vbuf_upload_buffers(struct u_vbuf_mgr_priv *mgr,
} else if (vb->stride) {
first = vb->stride * min_index;
size = vb->stride * count;
+
+ /* Unusual case when stride is smaller than the format size.
+ * XXX This won't work with interleaved arrays. */
+ if (mgr->ve->native_format_size[i] > vb->stride)
+ size += mgr->ve->native_format_size[i] - vb->stride;
} else {
first = 0;
size = mgr->ve->native_format_size[i];