I think this is a little easier to understand.
---
 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 ee7f509..1694a04 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.7.4

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to