[Mesa-dev] [PATCH 1/3] vbo: move vbo_draw_method into vbo_context.h

Marek Olšák maraeo at gmail.com
Sat May 5 13:12:51 PDT 2012


Hi,

could somebody please take a look at this series? It changes a couple
of things in gl_context and the vbo module.

The other two patches are:
[PATCH 2/3] mesa: move gl_client_array*[] from vbo_draw_func into gl_context
[PATCH 3/3] mesa: add gl_context::NewDriverState and use it for vertex arrays

Thanks,
Marek

On Wed, Apr 25, 2012 at 12:00 AM, Marek Olšák <maraeo at gmail.com> wrote:
> I'll need vbo_context in that function soon.
> ---
>  src/mesa/vbo/vbo_context.h    |   35 +++++++++++++++++++++++++++++++++++
>  src/mesa/vbo/vbo_exec.h       |   36 ------------------------------------
>  src/mesa/vbo/vbo_exec_api.c   |    2 +-
>  src/mesa/vbo/vbo_exec_array.c |    2 +-
>  src/mesa/vbo/vbo_save_draw.c  |    3 +--
>  5 files changed, 38 insertions(+), 40 deletions(-)
>
> diff --git a/src/mesa/vbo/vbo_context.h b/src/mesa/vbo/vbo_context.h
> index b9a8aff..a6397ba 100644
> --- a/src/mesa/vbo/vbo_context.h
> +++ b/src/mesa/vbo/vbo_context.h
> @@ -58,6 +58,18 @@
>  #include "vbo_save.h"
>
>
> +/** Used to signal when transitioning from one kind of drawing method
> + * to another.
> + */
> +enum draw_method
> +{
> +   DRAW_NONE,          /**< Initial value only */
> +   DRAW_BEGIN_END,
> +   DRAW_DISPLAY_LIST,
> +   DRAW_ARRAYS
> +};
> +
> +
>  struct vbo_context {
>    struct gl_client_array currval[VBO_ATTRIB_MAX];
>
> @@ -74,6 +86,8 @@ struct vbo_context {
>     * is responsible for initiating any fallback actions required:
>     */
>    vbo_draw_func draw_prims;
> +
> +   enum draw_method last_draw_method;
>  };
>
>
> @@ -101,4 +115,25 @@ get_program_mode( struct gl_context *ctx )
>  }
>
>
> +/**
> + * This is called by glBegin, glDrawArrays and glDrawElements (and
> + * variations of those calls).  When we transition from immediate mode
> + * drawing to array drawing we need to invalidate the array state.
> + *
> + * glBegin/End builds vertex arrays.  Those arrays may look identical
> + * to glDrawArrays arrays except that the position of the elements may
> + * be different.  For example, arrays of (position3v, normal3f) vs. arrays
> + * of (normal3f, position3f).  So we need to make sure we notify drivers
> + * that arrays may be changing.
> + */
> +static inline void
> +vbo_draw_method(struct vbo_context *vbo, enum draw_method method)
> +{
> +   if (vbo->last_draw_method != method) {
> +      struct gl_context *ctx = vbo->exec.ctx;
> +      ctx->Driver.UpdateState(ctx, _NEW_ARRAY);
> +      vbo->last_draw_method = method;
> +   }
> +}
> +
>  #endif
> diff --git a/src/mesa/vbo/vbo_exec.h b/src/mesa/vbo/vbo_exec.h
> index be9f3d7..4ac7d16 100644
> --- a/src/mesa/vbo/vbo_exec.h
> +++ b/src/mesa/vbo/vbo_exec.h
> @@ -78,26 +78,12 @@ struct vbo_exec_copied_vtx {
>  };
>
>
> -/** Used to signal when transitioning from one kind of drawing method
> - * to another.
> - */
> -enum draw_method
> -{
> -   DRAW_NONE,          /**< Initial value only */
> -   DRAW_BEGIN_END,
> -   DRAW_DISPLAY_LIST,
> -   DRAW_ARRAYS
> -};
> -
> -
>  struct vbo_exec_context
>  {
>    struct gl_context *ctx;
>    GLvertexformat vtxfmt;
>    GLvertexformat vtxfmt_noop;
>
> -   enum draw_method last_draw_method;
> -
>    struct {
>       struct gl_buffer_object *bufferobj;
>
> @@ -174,28 +160,6 @@ void vbo_exec_vtx_init( struct vbo_exec_context *exec );
>  void vbo_exec_vtx_destroy( struct vbo_exec_context *exec );
>
>
> -/**
> - * This is called by glBegin, glDrawArrays and glDrawElements (and
> - * variations of those calls).  When we transition from immediate mode
> - * drawing to array drawing we need to invalidate the array state.
> - *
> - * glBegin/End builds vertex arrays.  Those arrays may look identical
> - * to glDrawArrays arrays except that the position of the elements may
> - * be different.  For example, arrays of (position3v, normal3f) vs. arrays
> - * of (normal3f, position3f).  So we need to make sure we notify drivers
> - * that arrays may be changing.
> - */
> -static inline void
> -vbo_draw_method(struct vbo_exec_context *exec, enum draw_method method)
> -{
> -   if (exec->last_draw_method != method) {
> -      struct gl_context *ctx = exec->ctx;
> -      ctx->Driver.UpdateState(ctx, _NEW_ARRAY);
> -      exec->last_draw_method = method;
> -   }
> -}
> -
> -
>  #if FEATURE_beginend
>
>  void vbo_exec_vtx_flush( struct vbo_exec_context *exec, GLboolean unmap );
> diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c
> index 3f95410..b87da18 100644
> --- a/src/mesa/vbo/vbo_exec_api.c
> +++ b/src/mesa/vbo/vbo_exec_api.c
> @@ -700,7 +700,7 @@ static void GLAPIENTRY vbo_exec_Begin( GLenum mode )
>          return;
>       }
>
> -      vbo_draw_method(exec, DRAW_BEGIN_END);
> +      vbo_draw_method(vbo_context(ctx), DRAW_BEGIN_END);
>
>       if (ctx->Driver.PrepareExecBegin)
>         ctx->Driver.PrepareExecBegin(ctx);
> diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c
> index 2dcfb8e..6c8a32e 100644
> --- a/src/mesa/vbo/vbo_exec_array.c
> +++ b/src/mesa/vbo/vbo_exec_array.c
> @@ -523,7 +523,7 @@ vbo_bind_arrays(struct gl_context *ctx)
>    struct vbo_context *vbo = vbo_context(ctx);
>    struct vbo_exec_context *exec = &vbo->exec;
>
> -   vbo_draw_method(exec, DRAW_ARRAYS);
> +   vbo_draw_method(vbo, DRAW_ARRAYS);
>
>    if (exec->array.recalculate_inputs) {
>       recalculate_input_bindings(ctx);
> diff --git a/src/mesa/vbo/vbo_save_draw.c b/src/mesa/vbo/vbo_save_draw.c
> index 88a9a7e..47564d3 100644
> --- a/src/mesa/vbo/vbo_save_draw.c
> +++ b/src/mesa/vbo/vbo_save_draw.c
> @@ -250,7 +250,6 @@ vbo_save_playback_vertex_list(struct gl_context *ctx, void *data)
>    const struct vbo_save_vertex_list *node =
>       (const struct vbo_save_vertex_list *) data;
>    struct vbo_save_context *save = &vbo_context(ctx)->save;
> -   struct vbo_exec_context *exec = &vbo_context(ctx)->exec;
>    GLboolean remap_vertex_store = GL_FALSE;
>
>    if (save->vertex_store->buffer) {
> @@ -304,7 +303,7 @@ vbo_save_playback_vertex_list(struct gl_context *ctx, void *data)
>
>       vbo_bind_vertex_list( ctx, node );
>
> -      vbo_draw_method(exec, DRAW_DISPLAY_LIST);
> +      vbo_draw_method(vbo_context(ctx), DRAW_DISPLAY_LIST);
>
>       /* Again...
>        */
> --
> 1.7.5.4
>


More information about the mesa-dev mailing list