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

Brian Paul brianp at vmware.com
Mon May 7 09:24:51 PDT 2012


For the series, Reviewed-by: Brian Paul <brianp at vmware.com>

but I posted some comments for the other two patches.

-Brian


On 05/05/2012 02:12 PM, Marek Olšák wrote:
> 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
>>
> _______________________________________________
> 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