Merge branch 'master' into i915-unification
[mesa.git] / src / mesa / vbo / vbo_save_draw.c
index a50d1cd9049862be3ab45595f38a254e80b100c3..8940551d08b1ca416a5bfeccc2a92d197a48c540 100644 (file)
@@ -58,6 +58,8 @@ static void _playback_copy_to_current( GLcontext *ctx,
                                 node->vertex_size * sizeof(GLfloat), 
                                 data, node->vertex_store->bufferobj );
 
+   data += node->attrsz[0]; /* skip vertex position */
+
    for (i = VBO_ATTRIB_POS+1 ; i < VBO_ATTRIB_MAX ; i++) {
       if (node->attrsz[i]) {
         GLfloat *current = (GLfloat *)vbo->currval[i].Ptr;
@@ -203,6 +205,7 @@ void vbo_save_playback_vertex_list( GLcontext *ctx, void *data )
       if (ctx->NewState)
         _mesa_update_state( ctx );
 
+      /* XXX also need to check if shader enabled, but invalid */
       if ((ctx->VertexProgram.Enabled && !ctx->VertexProgram._Enabled) ||
           (ctx->FragmentProgram.Enabled && !ctx->FragmentProgram._Enabled)) {
          _mesa_error(ctx, GL_INVALID_OPERATION,
@@ -218,7 +221,7 @@ void vbo_save_playback_vertex_list( GLcontext *ctx, void *data )
                                    node->prim_count,
                                    NULL,
                                    0,  /* Node is a VBO, so this is ok */
-                                   node->count );
+                                   node->count - 1);
    }
 
    /* Copy to current?