From 6a63a4a14f71815474921360bcd24269a90fb494 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 12 Aug 2021 15:48:55 +0200 Subject: [PATCH] vbo/dlist: reset vertex_store::used in reset_counters MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This means that each list will start writing its vertices at index 0. The previous mode (append) was useful in the past when the vertices were written directly to a mapped-buffer object. Now that there's an intermediate storage in RAM, the added complexity of the append-mode has no value so drop it. Reviewed-by: Marek Olšák Part-of: --- src/mesa/vbo/vbo_save_api.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c index 77c2746..55769d0 100644 --- a/src/mesa/vbo/vbo_save_api.c +++ b/src/mesa/vbo/vbo_save_api.c @@ -188,11 +188,11 @@ reset_counters(struct gl_context *ctx) { struct vbo_save_context *save = &vbo_context(ctx)->save; - save->buffer_map = save->vertex_store->buffer_in_ram + save->vertex_store->used; + save->vertex_store->used = 0; + save->buffer_map = save->vertex_store->buffer_in_ram; if (save->vertex_size) - save->max_vert = (save->vertex_store->buffer_in_ram_size / sizeof(float) - save->vertex_store->used) / - save->vertex_size; + save->max_vert = save->vertex_store->buffer_in_ram_size / (sizeof(float) * save->vertex_size); else save->max_vert = 0; @@ -985,11 +985,13 @@ wrap_filled_vertex(struct gl_context *ctx) numComponents = save->copied.nr * save->vertex_size; - fi_type *buffer_ptr = save->vertex_store->buffer_in_ram + save->vertex_store->used; + fi_type *buffer_ptr = save->vertex_store->buffer_in_ram; memcpy(buffer_ptr, save->copied.buffer, numComponents * sizeof(fi_type)); - save->vert_count += save->copied.nr; + assert(save->vertex_store->used == 0 && save->vert_count == 0); + save->vert_count = save->copied.nr; + save->vertex_store->used = numComponents; } -- 2.7.4