Hi Brian, On Friday, 3 May 2019 00:17:51 CEST Brian Paul wrote: > On 05/02/2019 03:27 AM, mathias.froehl...@gmx.net wrote: > > From: Mathias Fröhlich <mathias.froehl...@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.froehl...@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 <bri...@vmware.com> > > Nice work!! Thanks for looking at the patches! best Mathias _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev