mesa: Delay display list save dispatch setup until Exec is set up.
authorEric Anholt <eric@anholt.net>
Fri, 18 Jan 2013 00:58:49 +0000 (16:58 -0800)
committerEric Anholt <eric@anholt.net>
Tue, 22 Jan 2013 05:26:48 +0000 (21:26 -0800)
This will let us copy from the Exec dispatch to deal with our commands that
don't get compiled into display lists.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/main/context.c
src/mesa/main/dlist.c
src/mesa/main/dlist.h

index 1c917e7..5e9e539 100644 (file)
@@ -938,6 +938,9 @@ _mesa_initialize_dispatch_tables(struct gl_context *ctx)
 {
    /* Do the code-generated setup of the exec table in api_exec.c. */
    _mesa_initialize_exec_table(ctx);
+
+   if (ctx->Save)
+      _mesa_initialize_save_table(ctx);
 }
 
 /**
@@ -1044,7 +1047,7 @@ _mesa_initialize_context(struct gl_context *ctx,
    switch (ctx->API) {
    case API_OPENGL_COMPAT:
       ctx->BeginEnd = create_beginend_table(ctx);
-      ctx->Save = _mesa_create_save_table(ctx);
+      ctx->Save = _mesa_alloc_dispatch_table();
       if (!ctx->BeginEnd || !ctx->Save)
          goto fail;
 
index 7eb2cb2..06c44b9 100644 (file)
@@ -9566,14 +9566,10 @@ exec_MultiModeDrawElementsIBM(const GLenum * mode,
  * initialized from _mesa_init_api_defaults and from the active vtxfmt
  * struct.
  */
-struct _glapi_table *
-_mesa_create_save_table(const struct gl_context *ctx)
+void
+_mesa_initialize_save_table(const struct gl_context *ctx)
 {
-   struct _glapi_table *table;
-
-   table = _mesa_alloc_dispatch_table();
-   if (table == NULL)
-      return NULL;
+   struct _glapi_table *table = ctx->Save;
 
    _mesa_loopback_init_api_table(ctx, table);
 
@@ -10233,8 +10229,6 @@ _mesa_create_save_table(const struct gl_context *ctx)
 
    /* GL_NV_primitive_restart */
    SET_PrimitiveRestartIndex(table, _mesa_PrimitiveRestartIndex);
-
-   return table;
 }
 
 
index 9d4fc68..e049476 100644 (file)
@@ -74,7 +74,7 @@ extern void _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dl
 
 extern void _mesa_save_vtxfmt_init( GLvertexformat *vfmt );
 
-extern struct _glapi_table *_mesa_create_save_table(const struct gl_context *);
+extern void _mesa_initialize_save_table(const struct gl_context *);
 
 extern void _mesa_install_dlist_vtxfmt(struct _glapi_table *disp,
                                        const GLvertexformat *vfmt);