vbo/dlist: remove vbo_save_context::buffer_map
buffer_map pointed to the first vertex in the store for the current list. With the previous commit, the first vertex is always at index 0, so we can drop buffer_map. Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12646>
This commit is contained in:
@@ -176,7 +176,6 @@ struct vbo_save_context {
|
||||
struct gl_buffer_object *current_bo;
|
||||
unsigned current_bo_bytes_used;
|
||||
|
||||
fi_type *buffer_map; /**< Mapping of vertex_store's buffer */
|
||||
fi_type vertex[VBO_ATTRIB_MAX*4]; /* current values */
|
||||
fi_type *attrptr[VBO_ATTRIB_MAX];
|
||||
GLuint vert_count;
|
||||
|
||||
@@ -189,7 +189,6 @@ reset_counters(struct gl_context *ctx)
|
||||
struct vbo_save_context *save = &vbo_context(ctx)->save;
|
||||
|
||||
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_size);
|
||||
@@ -261,9 +260,9 @@ convert_line_loop_to_strip(struct vbo_save_context *save,
|
||||
*/
|
||||
const GLuint sz = save->vertex_size;
|
||||
/* 0th vertex: */
|
||||
const fi_type *src = save->buffer_map + prim->start * sz;
|
||||
const fi_type *src = save->vertex_store->buffer_in_ram + prim->start * sz;
|
||||
/* end of buffer: */
|
||||
fi_type *dst = save->buffer_map + (prim->start + prim->count) * sz;
|
||||
fi_type *dst = save->vertex_store->buffer_in_ram + (prim->start + prim->count) * sz;
|
||||
|
||||
memcpy(dst, src, sz * sizeof(float));
|
||||
|
||||
@@ -461,7 +460,7 @@ add_vertex(struct vbo_save_context *save, struct hash_table *hash_to_index,
|
||||
if (!hash_to_index)
|
||||
return index;
|
||||
|
||||
fi_type *vert = save->buffer_map + save->vertex_size * index;
|
||||
fi_type *vert = save->vertex_store->buffer_in_ram + save->vertex_size * index;
|
||||
|
||||
struct vertex_key *key = malloc(sizeof(struct vertex_key));
|
||||
key->vertex_size = save->vertex_size;
|
||||
@@ -538,7 +537,7 @@ compile_vertex_list(struct gl_context *ctx)
|
||||
if (current_size) {
|
||||
node->cold->current_data = malloc(current_size * sizeof(GLfloat));
|
||||
if (node->cold->current_data) {
|
||||
const char *buffer = (const char *)save->buffer_map;
|
||||
const char *buffer = (const char *)save->vertex_store->buffer_in_ram;
|
||||
unsigned attr_offset = save->attrsz[0] * sizeof(GLfloat);
|
||||
unsigned vertex_offset = 0;
|
||||
|
||||
@@ -560,7 +559,7 @@ compile_vertex_list(struct gl_context *ctx)
|
||||
|
||||
/* Copy duplicated vertices
|
||||
*/
|
||||
save->copied.nr = copy_vertices(ctx, node, save->buffer_map);
|
||||
save->copied.nr = copy_vertices(ctx, node, save->vertex_store->buffer_in_ram);
|
||||
|
||||
if (node->cold->prims[node->cold->prim_count - 1].mode == GL_LINE_LOOP) {
|
||||
convert_line_loop_to_strip(save, node);
|
||||
@@ -787,7 +786,7 @@ compile_vertex_list(struct gl_context *ctx)
|
||||
ctx->Driver.BufferSubData(ctx,
|
||||
save->current_bo_bytes_used,
|
||||
total_vert_count * save->vertex_size * sizeof(fi_type),
|
||||
vertex_to_index ? temp_vertices_buffer : save->buffer_map,
|
||||
vertex_to_index ? temp_vertices_buffer : save->vertex_store->buffer_in_ram,
|
||||
node->cold->ib.obj);
|
||||
save->current_bo_bytes_used += total_vert_count * save->vertex_size * sizeof(fi_type);
|
||||
|
||||
@@ -904,8 +903,7 @@ end:
|
||||
struct gl_vertex_array_object *vao = node->VAO[VP_MODE_SHADER];
|
||||
GLintptr original = vao->BufferBinding[0].Offset;
|
||||
if (!ctx->ListState.Current.UseLoopback) {
|
||||
GLintptr new_offset = (save->buffer_map - save->vertex_store->buffer_in_ram) *
|
||||
sizeof(GLfloat);
|
||||
GLintptr new_offset = 0;
|
||||
/* 'start_offset' has been added to all primitives 'start', so undo it here. */
|
||||
new_offset -= start_offset * stride;
|
||||
vao->BufferBinding[0].Offset = new_offset;
|
||||
@@ -1109,7 +1107,7 @@ upgrade_vertex(struct gl_context *ctx, GLuint attr, GLuint newsz)
|
||||
*/
|
||||
if (save->copied.nr) {
|
||||
const fi_type *data = save->copied.buffer;
|
||||
fi_type *dest = save->buffer_map;
|
||||
fi_type *dest = save->vertex_store->buffer_in_ram;
|
||||
|
||||
/* Need to note this and fix up at runtime (or loopback):
|
||||
*/
|
||||
@@ -1349,7 +1347,6 @@ dlist_fallback(struct gl_context *ctx)
|
||||
|
||||
copy_to_current(ctx);
|
||||
reset_vertex(ctx);
|
||||
reset_counters(ctx);
|
||||
if (save->out_of_memory) {
|
||||
_mesa_install_save_vtxfmt(ctx, &save->vtxfmt_noop);
|
||||
}
|
||||
@@ -1598,7 +1595,6 @@ _ensure_draws_fits_in_storage(struct gl_context *ctx, int primcount, int vertcou
|
||||
compile_vertex_list(ctx);
|
||||
}
|
||||
realloc_storage(ctx, realloc_prim ? primcount : -1, realloc_vert ? vertcount : -1);
|
||||
reset_counters(ctx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1920,7 +1916,6 @@ vbo_save_SaveFlushVertices(struct gl_context *ctx)
|
||||
|
||||
copy_to_current(ctx);
|
||||
reset_vertex(ctx);
|
||||
reset_counters(ctx);
|
||||
ctx->Driver.SaveNeedFlush = GL_FALSE;
|
||||
}
|
||||
|
||||
@@ -1943,7 +1938,6 @@ vbo_save_NewList(struct gl_context *ctx, GLuint list, GLenum mode)
|
||||
save->vertex_store = alloc_vertex_store(ctx, 0);
|
||||
|
||||
reset_vertex(ctx);
|
||||
reset_counters(ctx);
|
||||
ctx->Driver.SaveNeedFlush = GL_FALSE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user