diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-02-22 11:17:39 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-02-22 11:24:47 +0000 |
commit | 3adc108b4a7460ef5d92c0f5f0ee655d4ca6cb32 (patch) | |
tree | 064191ff10bc1f7d6a7fb21deaa553e24880096a | |
parent | b4cbd2b312d53a50603e2cda925711bc9def4517 (diff) |
i965: Trim the interleaved upload to the minimum number of vertices
... should have no impact on a properly formatted draw operation.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_draw_upload.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index 452074961d..140fb4e625 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -272,7 +272,7 @@ static void brw_prepare_vertices(struct brw_context *brw) struct intel_context *intel = intel_context(ctx); GLbitfield vs_inputs = brw->vs.prog_data->inputs_read; const unsigned char *ptr = NULL; - GLuint interleaved = 0, total_size = 0; + GLuint interleaved = 0, total_size = 0, count = -1; unsigned int min_index = brw->vb.min_index; unsigned int max_index = brw->vb.max_index; int i, j; @@ -390,6 +390,9 @@ static void brw_prepare_vertices(struct brw_context *brw) interleaved = 0; } + if (count > input->count) + count = input->count; + upload[nr_uploads++] = input; total_size += input->element_size; } @@ -401,6 +404,7 @@ static void brw_prepare_vertices(struct brw_context *brw) /* All uploads are interleaved, so upload the arrays together as * interleaved. First, upload the contents and set up upload[0]. */ + upload[0]->count = count; /* trim the upload over all arrays */ copy_array_to_vbo_array(brw, upload[0], &brw->vb.buffers[j], interleaved); |