diff --git a/src/mesa/vbo/vbo_save.h b/src/mesa/vbo/vbo_save.h index efe39044aac..8a513c8cf7e 100644 --- a/src/mesa/vbo/vbo_save.h +++ b/src/mesa/vbo/vbo_save.h @@ -64,6 +64,7 @@ struct vbo_save_vertex_list { struct pipe_draw_start_count_bias start_count; }; uint8_t mode; + bool draw_begins; int16_t private_refcount[VP_MODE_MAX]; struct gl_context *ctx; diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c index e71613c93cf..a483aff9f9a 100644 --- a/src/mesa/vbo/vbo_save_api.c +++ b/src/mesa/vbo/vbo_save_api.c @@ -874,6 +874,7 @@ compile_vertex_list(struct gl_context *ctx) free(merged_prims); end: + node->draw_begins = node->cold->prims[0].begin; if (!save->current_bo) { save->current_bo = ctx->Driver.NewBufferObject(ctx, VBO_BUF_ID + 1); diff --git a/src/mesa/vbo/vbo_save_draw.c b/src/mesa/vbo/vbo_save_draw.c index 51c48c84813..b609a7debe6 100644 --- a/src/mesa/vbo/vbo_save_draw.c +++ b/src/mesa/vbo/vbo_save_draw.c @@ -166,7 +166,7 @@ vbo_save_playback_vertex_list_loopback(struct gl_context *ctx, void *data) FLUSH_FOR_DRAW(ctx); - if (_mesa_inside_begin_end(ctx) && node->cold->prims[0].begin) { + if (_mesa_inside_begin_end(ctx) && node->draw_begins) { /* Error: we're about to begin a new primitive but we're already * inside a glBegin/End pair. */ @@ -304,7 +304,7 @@ vbo_save_playback_vertex_list(struct gl_context *ctx, void *data, bool copy_to_c FLUSH_FOR_DRAW(ctx); - if (_mesa_inside_begin_end(ctx) && node->cold->prims[0].begin) { + if (_mesa_inside_begin_end(ctx) && node->draw_begins) { /* Error: we're about to begin a new primitive but we're already * inside a glBegin/End pair. */