[Mesa-dev] [PATCH v2 01/12] mesa: separate exec allocation from initialization

Jordan Justen jljusten at gmail.com
Mon Nov 19 09:18:01 PST 2012


On Sun, Nov 18, 2012 at 11:49 PM, Jordan Justen
<jordan.l.justen at intel.com> wrote:
> 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 at intel.com>
> ---
>  src/mapi/glapi/gen/gl_genexec.py |   21 +++++++++------------
>  src/mesa/main/api_exec.h         |    4 ++--
>  src/mesa/main/context.c          |    7 +++++--
>  3 files changed, 16 insertions(+), 16 deletions(-)
>
> diff --git a/src/mapi/glapi/gen/gl_genexec.py b/src/mapi/glapi/gen/gl_genexec.py
> index 9b71689..ddf219a 100644
> --- a/src/mapi/glapi/gen/gl_genexec.py
> +++ b/src/mapi/glapi/gen/gl_genexec.py
> @@ -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,26 @@ 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);
>
> +   assert(ctx->Version > 0);

I need to move this assert to be added after patch 12.

-Jordan

>  """
>
>
>  footer = """
> -   return exec;
>  }
>  """
>
> diff --git a/src/mesa/main/api_exec.h b/src/mesa/main/api_exec.h
> index 7d37ff7..8292c12 100644
> --- a/src/mesa/main/api_exec.h
> +++ b/src/mesa/main/api_exec.h
> @@ -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
> diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
> index 0508378..f15b8bc 100644
> --- a/src/mesa/main/context.c
> +++ b/src/mesa/main/context.c
> @@ -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);
> --
> 1.7.10.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list