mesa: separate exec allocation from initialization
authorJordan Justen <jordan.l.justen@intel.com>
Fri, 16 Nov 2012 18:27:13 +0000 (10:27 -0800)
committerJordan Justen <jordan.l.justen@intel.com>
Sun, 16 Dec 2012 23:30:27 +0000 (15:30 -0800)
In glapi/gl_genexec.py:
* Remove _mesa_alloc_dispatch_table call

In glapi/gl_genexec.py and api_exec.h:
* Rename _mesa_create_exec_table to _mesa_initialize_exec_table

In context.c:
* Call _mesa_alloc_dispatch_table instead of _mesa_create_exec_table
* Call _mesa_initialize_exec_table (this is temporary)

Once all drivers have been modified to call
_mesa_initialize_exec_table, then the call to
_mesa_initialize_context can be removed from context.c.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mapi/glapi/gen/gl_genexec.py
src/mesa/main/api_exec.h
src/mesa/main/context.c

index 593d1955b1c39eab87780f2b457114b464f11c1c..7952ace280fac4d045f1f196ad75d49b12fa5fd5 100644 (file)
@@ -22,7 +22,7 @@
 # IN THE SOFTWARE.
 
 # This script generates the file api_exec.c, which contains
-# _mesa_create_exec_table().  It is responsible for populating all
+# _mesa_initialize_exec_table().  It is responsible for populating all
 # entries in the "exec" dispatch table that aren't dynamic.
 
 import collections
@@ -112,29 +112,25 @@ header = """/**
 
 
 /**
- * Initialize a dispatch table with pointers to Mesa's immediate-mode
- * commands.
+ * Initialize a context's exec table with pointers to Mesa's supported
+ * GL functions.
  *
- * Pointers to glBegin()/glEnd() object commands and a few others
- * are provided via the GLvertexformat interface.
+ * This function depends on ctx->Version.
  *
  * \param ctx  GL context to which \c exec belongs.
- * \param exec dispatch table.
  */
-struct _glapi_table *
-_mesa_create_exec_table(struct gl_context *ctx)
+void
+_mesa_initialize_exec_table(struct gl_context *ctx)
 {
    struct _glapi_table *exec;
 
-   exec = _mesa_alloc_dispatch_table(_gloffset_COUNT);
-   if (exec == NULL)
-      return NULL;
+   exec = ctx->Exec;
+   assert(exec != NULL);
 
 """
 
 
 footer = """
-   return exec;
 }
 """
 
index 7d37ff754bee24860e277c38c34219d7dda97fe7..8292c12de1fe67884d764db30d4a87c3849bfb3a 100644 (file)
@@ -33,8 +33,8 @@ struct gl_context;
 extern struct _glapi_table *
 _mesa_alloc_dispatch_table(int size);
 
-extern struct _glapi_table *
-_mesa_create_exec_table(struct gl_context *ctx);
+extern void
+_mesa_initialize_exec_table(struct gl_context *ctx);
 
 
 #endif
index fa552e8180b3c0216ec8c0018a7299696c8aebb4..df7647dd5adf07445bb55864113fbad9b51c064b 100644 (file)
@@ -935,8 +935,11 @@ _mesa_initialize_context(struct gl_context *ctx,
       return GL_FALSE;
    }
 
-   /* setup the API dispatch tables */
-   ctx->Exec = _mesa_create_exec_table(ctx);
+   /* setup the API dispatch tables with all nop functions */
+   ctx->Exec = _mesa_alloc_dispatch_table(_gloffset_COUNT);
+
+   /* setup the API exec functions */
+   _mesa_initialize_exec_table(ctx);
 
    if (!ctx->Exec) {
       _mesa_reference_shared_state(ctx, &ctx->Shared, NULL);