mesa: Delay display list save dispatch setup until Exec is set up.

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>
This commit is contained in:
Eric Anholt 2013-01-17 16:58:49 -08:00
parent be4b1664fb
commit 7820e2dd8d
3 changed files with 8 additions and 11 deletions

View 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;

View 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;
}

View 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);