diff options
author | Marek Olšák <[email protected]> | 2011-06-19 19:38:48 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2011-06-19 21:09:18 +0200 |
commit | 0d58723cde31703f13f2e8e0747cde30b9e5d6de (patch) | |
tree | ada1ae714fffb0b614d76f2a2a914e3c2f4345c7 /src | |
parent | dd3b812962a8720aca0a80bf6ea35f70319d3ca1 (diff) |
u_vbuf_mgr: fix uploading if format size is greater than stride
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/auxiliary/util/u_vbuf_mgr.c | 5 |
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]; |