mesa: rework vbo_exec_init()
authorTimothy Arceri <tarceri@itsqueeze.com>
Wed, 7 Jun 2017 02:43:27 +0000 (12:43 +1000)
committerTimothy Arceri <tarceri@itsqueeze.com>
Thu, 8 Jun 2017 23:13:46 +0000 (09:13 +1000)
Here we make some assumptions about the AEcontext and set the
recalculate bools directly.

Some formating fixes are also made while we are here.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mesa/main/api_arrayelt.c
src/mesa/main/api_arrayelt.h
src/mesa/vbo/vbo_exec.c

index 46175e4cc74a5005e387d3090f362c4e4786dc51..8eb523dd525d9d4dacf5e73360796e462b6042c7 100644 (file)
@@ -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
 
 
index 03cd9ecbd517df0a30ac6fb7fc60d5249426bd7f..9ae79a94b74ed539ce2a5d24540a14382661601c 100644 (file)
@@ -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:
index 4db4f4088b97c19de6c69d7c1f658d8ea1d4592a..de8461f1fcc8f6f91cc2707d15ef48b341507bc1 100644 (file)
 
 
 
-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;
 }