On Mon, Nov 9, 2015 at 4:56 PM, Ian Romanick <i...@freedesktop.org> wrote: > From: Ian Romanick <ian.d.roman...@intel.com> > > Pulls the parts of update_array_format that aren't just parameter > validation out into a function that can be called from other parts of > Mesa (e.g., meta). > > Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> > --- > src/mesa/main/varray.c | 68 > ++++++++++++++++++++++++++++++++++++-------------- > src/mesa/main/varray.h | 8 ++++++ > 2 files changed, 57 insertions(+), 19 deletions(-) > > diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c > index 5e0534a..e9f78e9 100644 > --- a/src/mesa/main/varray.c > +++ b/src/mesa/main/varray.c > @@ -248,6 +248,52 @@ get_legal_types_mask(const struct gl_context *ctx) > > > /** > + * \param attrib The index of the attribute array > + * \param size Components per element (1, 2, 3 or 4) > + * \param type Datatype of each component (GL_FLOAT, GL_INT, etc) > + * \param format Either GL_RGBA or GL_BGRA. > + * \param normalized Whether integer types are converted to floats in > [-1, 1] > + * \param integer Integer-valued values (will not be normalized to > [-1, 1]) > + * \param doubles Double values not reduced to floats > + * \param relativeOffset Offset of the first element relative to the binding > + * offset. > + * \param flush_verties Should \c FLUSH_VERTICES be invoked before updating > + * state? > + */ > +void > +_mesa_update_array_format(struct gl_context *ctx, > + struct gl_vertex_array_object *vao, > + GLuint attrib, GLint size, GLenum type, > + GLenum format, GLboolean normalized, > + GLboolean integer, GLboolean doubles, > + GLuint relativeOffset, bool flush_vertices) > +{ > + struct gl_vertex_attrib_array *const array = &vao->VertexAttrib[attrib]; > + GLint elementSize; > + > + assert(size <= 4); > + > + if (flush_vertices) { > + FLUSH_VERTICES(ctx, 0); > + } > + > + elementSize = _mesa_bytes_per_vertex_attrib(size, type); > + assert(elementSize != -1); > + > + array->Size = size; > + array->Type = type; > + array->Format = format; > + array->Normalized = normalized; > + array->Integer = integer; > + array->Doubles = doubles; > + array->RelativeOffset = relativeOffset; > + array->_ElementSize = elementSize; > + > + vao->NewArrays |= VERT_BIT(attrib); > + ctx->NewState |= _NEW_ARRAY; > +} > + > +/** > * Does error checking and updates the format in an attrib array. > * > * Called by update_array() and VertexAttrib*Format(). > @@ -274,9 +320,7 @@ update_array_format(struct gl_context *ctx, > GLboolean normalized, GLboolean integer, GLboolean > doubles, > GLuint relativeOffset) > { > - struct gl_vertex_attrib_array *array; > GLbitfield typeBit; > - GLint elementSize; > GLenum format = GL_RGBA; > > if (ctx->Array.LegalTypesMask == 0 || ctx->Array.LegalTypesMaskAPI != > ctx->API) { > @@ -377,23 +421,9 @@ update_array_format(struct gl_context *ctx, > return false; > } > > - assert(size <= 4); > - > - elementSize = _mesa_bytes_per_vertex_attrib(size, type); > - assert(elementSize != -1); > - > - array = &vao->VertexAttrib[attrib]; > - array->Size = size; > - array->Type = type; > - array->Format = format; > - array->Normalized = normalized; > - array->Integer = integer; > - array->Doubles = doubles; > - array->RelativeOffset = relativeOffset; > - array->_ElementSize = elementSize; > - > - vao->NewArrays |= VERT_BIT(attrib); > - ctx->NewState |= _NEW_ARRAY; > + _mesa_update_array_format(ctx, vao, attrib, size, type, format, > + normalized, integer, doubles, relativeOffset, > + false); > > return true; > } > diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h > index 1579b76..744b336 100644 > --- a/src/mesa/main/varray.h > +++ b/src/mesa/main/varray.h > @@ -91,6 +91,14 @@ _mesa_attr_zero_aliases_vertex(struct gl_context *ctx) > } > > extern void > +_mesa_update_array_format(struct gl_context *ctx, > + struct gl_vertex_array_object *vao, > + GLuint attrib, GLint size, GLenum type, > + GLenum format, GLboolean normalized, > + GLboolean integer, GLboolean doubles, > + GLuint relativeOffset, bool flush_vertices); > + > +extern void > _mesa_bind_vertex_buffer(struct gl_context *ctx, > struct gl_vertex_array_object *vao, > GLuint index, > -- > 2.1.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev