vbo/dlist: reset vertex_store::used in reset_counters
authorPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Thu, 12 Aug 2021 13:48:55 +0000 (15:48 +0200)
committerPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Thu, 9 Sep 2021 14:42:16 +0000 (16:42 +0200)
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 <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>

src/mesa/vbo/vbo_save_api.c

index 77c2746..55769d0 100644 (file)
@@ -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;
 }