From 4edc8fdcdc8df2a37930241b803383d46e6d7f5f Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 12 Jan 2018 13:17:10 -0700 Subject: [PATCH] vbo: rewrite some code in playback_copy_to_current() I think this is a little easier to understand. Reviewed-by: Ian Romanick --- src/mesa/vbo/vbo_save_draw.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/mesa/vbo/vbo_save_draw.c b/src/mesa/vbo/vbo_save_draw.c index ee7f509b6cb..1694a04a3e1 100644 --- a/src/mesa/vbo/vbo_save_draw.c +++ b/src/mesa/vbo/vbo_save_draw.c @@ -51,7 +51,6 @@ playback_copy_to_current(struct gl_context *ctx, fi_type vertex[VBO_ATTRIB_MAX * 4]; fi_type *data; GLbitfield64 mask; - GLuint offset; if (node->current_size == 0) return; @@ -60,14 +59,13 @@ playback_copy_to_current(struct gl_context *ctx, data = node->current_data; } else { - data = vertex; + /* Position of last vertex */ + const GLuint pos = node->vertex_count > 0 ? node->vertex_count - 1 : 0; + /* Offset to last vertex in the vertex buffer */ + const GLuint offset = node->buffer_offset + + pos * node->vertex_size * sizeof(GLfloat); - if (node->vertex_count) - offset = (node->buffer_offset + - (node->vertex_count - 1) - * node->vertex_size * sizeof(GLfloat)); - else - offset = node->buffer_offset; + data = vertex; ctx->Driver.GetBufferSubData(ctx, offset, node->vertex_size * sizeof(GLfloat), -- 2.30.2