[Mesa-dev] [PATCH 03/10] mesa: Implement _mesa_array_element by walking enabled arrays.
Mathias Fröhlich
Mathias.Froehlich at gmx.net
Fri May 3 05:18:29 UTC 2019
Hi Brian,
On Friday, 3 May 2019 00:17:51 CEST Brian Paul wrote:
> On 05/02/2019 03:27 AM, Mathias.Froehlich at gmx.net wrote:
> > From: Mathias Fröhlich <mathias.froehlich at web.de>
> >
> > In glArrayElement, use the bitmask trick to just walk the enabled
> > vao arrays. This should be about equivalent in execution time to
> > walk the prepare aelt_context list. Finally this will allow us to
> > reduce the _mesa_update_state calls in a few patches.
> >
> > Signed-off-by: Mathias Fröhlich <Mathias.Froehlich at web.de>
> > ---
> > src/mesa/main/api_arrayelt.c | 78 ++++++++++++++++++++++++++++--------
> > 1 file changed, 61 insertions(+), 17 deletions(-)
> >
> > diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c
> > index d46c8d14b68..62f1e73ca4c 100644
> > --- a/src/mesa/main/api_arrayelt.c
> > +++ b/src/mesa/main/api_arrayelt.c
> > @@ -1541,32 +1541,76 @@ _ae_update_state(struct gl_context *ctx)
> > }
> >
> >
> > +static inline attrib_func
> > +func_nv(const struct gl_vertex_format *vformat)
> > +{
> > + return AttribFuncsNV[vformat->Normalized][vformat->Size-1]
> > + [TYPE_IDX(vformat->Type)];
> > +}
> > +
> > +
> > +static inline attrib_func
> > +func_arb(const struct gl_vertex_format *vformat)
> > +{
> > + return AttribFuncsARB[NORM_IDX(vformat)][vformat->Size-1]
> > + [TYPE_IDX(vformat->Type)];
> > +}
> > +
> > +
> > +static inline const void *
> > +attrib_src(const struct gl_vertex_array_object *vao,
> > + const struct gl_array_attributes *array, GLint elt)
> > +{
> > + const struct gl_vertex_buffer_binding *binding =
> > + &vao->BufferBinding[array->BufferBindingIndex];
> > + const GLubyte *src
> > + = ADD_POINTERS(binding->BufferObj->Mappings[MAP_INTERNAL].Pointer,
> > + _mesa_vertex_attrib_address(array, binding))
> > + + elt * binding->Stride;
> > + return src;
> > +}
>
> Could you add some brief comments on those functions to explain what
> they do?
Added brief comments:
/*
* Return VertexAttrib*NV function pointer matching the provided vertex format.
*/
static inline attrib_func
func_nv(const struct gl_vertex_format *vformat)
[...]
/*
* Return VertexAttrib*ARB function pointer matching the provided vertex format.
*/
static inline attrib_func
func_arb(const struct gl_vertex_format *vformat)
[...]
/*
* Return the address of the array attribute array at elt in the
* vertex array object vao.
*/
static inline const void *
attrib_src(const struct gl_vertex_array_object *vao,
const struct gl_array_attributes *array, GLint elt)
> Otherwise, for the rest of the series,
> Reviewed-by: Brian Paul <brianp at vmware.com>
>
> Nice work!!
Thanks for looking at the patches!
best
Mathias
More information about the mesa-dev
mailing list