summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/svga/svga_state_vdecl.c
diff options
context:
space:
mode:
authorThomas Hellstrom <thellstrom@vmware.com>2011-03-09 12:39:14 +0100
committerThomas Hellstrom <thellstrom@vmware.com>2011-03-10 14:30:50 +0100
commit6d4e337f3890105c7d8a2f132412c137d2570d25 (patch)
treedda501f467a5d7213902159cc8574628241428d0 /src/gallium/drivers/svga/svga_state_vdecl.c
parent9b7f3776359640d452697f3a487a345820abebf0 (diff)
gallium/svga: Only upload parts of vertexarrays that are actually used
Make sure we only upload parts of vertex arrays that are actually used by a draw command. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Diffstat (limited to 'src/gallium/drivers/svga/svga_state_vdecl.c')
-rw-r--r--src/gallium/drivers/svga/svga_state_vdecl.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gallium/drivers/svga/svga_state_vdecl.c b/src/gallium/drivers/svga/svga_state_vdecl.c
index 2f85f9488f..5bd51ca677 100644
--- a/src/gallium/drivers/svga/svga_state_vdecl.c
+++ b/src/gallium/drivers/svga/svga_state_vdecl.c
@@ -59,8 +59,8 @@ upload_user_buffers( struct svga_context *svga )
if (!buffer->uploaded.buffer) {
boolean flushed;
ret = u_upload_buffer( svga->upload_vb,
- 0, 0,
- buffer->b.b.width0,
+ 0, buffer->source_offset,
+ buffer->b.b.width0 - buffer->source_offset,
&buffer->b.b,
&buffer->uploaded.offset,
&buffer->uploaded.buffer,
@@ -69,16 +69,19 @@ upload_user_buffers( struct svga_context *svga )
return ret;
if (0)
- debug_printf("%s: %d: orig buf %p upl buf %p ofs %d sz %d\n",
+ debug_printf("%s: %d: orig buf %p upl buf %p ofs %d sofs %d"
+ " sz %d\n",
__FUNCTION__,
i,
buffer,
buffer->uploaded.buffer,
buffer->uploaded.offset,
+ buffer->source_offset,
buffer->b.b.width0);
}
svga->curr.vb[i].buffer_offset = buffer->uploaded.offset;
+ svga_buffer(buffer->uploaded.buffer)->source_offset = buffer->source_offset;
}
}