diff options
-rw-r--r-- | src/mesa/main/api_arrayelt.c | 7 | ||||
-rw-r--r-- | src/mesa/main/api_arrayelt.h | 1 | ||||
-rw-r--r-- | src/mesa/vbo/vbo_exec.c | 18 |
3 files changed, 18 insertions, 8 deletions
diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c index 46175e4cc74..8eb523dd525 100644 --- a/src/mesa/main/api_arrayelt.c +++ b/src/mesa/main/api_arrayelt.c @@ -94,6 +94,13 @@ TYPE_IDX(GLenum t) } +bool +_ae_is_state_dirty(struct gl_context *ctx) +{ + return AE_CONTEXT(ctx)->NewState; +} + + #define NUM_TYPES 8 diff --git a/src/mesa/main/api_arrayelt.h b/src/mesa/main/api_arrayelt.h index 03cd9ecbd51..9ae79a94b74 100644 --- a/src/mesa/main/api_arrayelt.h +++ b/src/mesa/main/api_arrayelt.h @@ -34,6 +34,7 @@ extern GLboolean _ae_create_context( struct gl_context *ctx ); extern void _ae_destroy_context( struct gl_context *ctx ); extern void _ae_invalidate_state( struct gl_context *ctx, GLbitfield new_state ); +extern bool _ae_is_state_dirty(struct gl_context *ctx); extern void GLAPIENTRY _ae_ArrayElement( GLint elt ); /* May optionally be called before a batch of element calls: diff --git a/src/mesa/vbo/vbo_exec.c b/src/mesa/vbo/vbo_exec.c index 4db4f4088b9..de8461f1fcc 100644 --- a/src/mesa/vbo/vbo_exec.c +++ b/src/mesa/vbo/vbo_exec.c @@ -34,24 +34,26 @@ -void vbo_exec_init( struct gl_context *ctx ) +void +vbo_exec_init(struct gl_context *ctx) { struct vbo_exec_context *exec = &vbo_context(ctx)->exec; exec->ctx = ctx; - /* Initialize the arrayelt helper - */ - if (!ctx->aelt_context && - !_ae_create_context( ctx )) - return; + /* aelt_context should have been created by the caller */ + assert(ctx->aelt_context); - vbo_exec_vtx_init( exec ); + vbo_exec_vtx_init(exec); ctx->Driver.NeedFlush = 0; ctx->Driver.CurrentExecPrimitive = PRIM_OUTSIDE_BEGIN_END; - vbo_exec_invalidate_state( ctx, ~0 ); + /* The aelt_context state should still be dirty from its creation */ + assert(_ae_is_state_dirty(ctx)); + + exec->array.recalculate_inputs = GL_TRUE; + exec->eval.recalculate_maps = GL_TRUE; } |