diff options
Diffstat (limited to 'src/mesa/vbo/vbo_save_draw.c')
-rw-r--r-- | src/mesa/vbo/vbo_save_draw.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/mesa/vbo/vbo_save_draw.c b/src/mesa/vbo/vbo_save_draw.c index c867bff947b..15ace15c673 100644 --- a/src/mesa/vbo/vbo_save_draw.c +++ b/src/mesa/vbo/vbo_save_draw.c @@ -44,7 +44,8 @@ static void copy_vao(struct gl_context *ctx, const struct gl_vertex_array_object *vao, - GLbitfield mask, GLbitfield state, int shift, fi_type **data) + GLbitfield mask, GLbitfield state, GLbitfield pop_state, + int shift, fi_type **data) { struct vbo_context *vbo = vbo_context(ctx); @@ -74,6 +75,7 @@ copy_vao(struct gl_context *ctx, const struct gl_vertex_array_object *vao, vbo_set_vertex_format(&currval->Format, size, type); ctx->NewState |= state; + ctx->PopAttribState |= pop_state; } *data += size; @@ -94,10 +96,12 @@ playback_copy_to_current(struct gl_context *ctx, fi_type *data = node->current_data; /* Copy conventional attribs and generics except pos */ copy_vao(ctx, node->VAO[VP_MODE_SHADER], ~VERT_BIT_POS & VERT_BIT_ALL, - _NEW_CURRENT_ATTRIB, 0, &data); + _NEW_CURRENT_ATTRIB, GL_CURRENT_BIT, 0, &data); /* Copy materials */ copy_vao(ctx, node->VAO[VP_MODE_FF], VERT_BIT_MAT_ALL, - _NEW_CURRENT_ATTRIB | _NEW_LIGHT, VBO_MATERIAL_SHIFT, &data); + _NEW_CURRENT_ATTRIB | _NEW_LIGHT, + GL_CURRENT_BIT | GL_LIGHTING_BIT, + VBO_MATERIAL_SHIFT, &data); /* Colormaterial -- this kindof sucks. */ |