varray.h revision 7ec681f3
17117f1b4Smrg/*
27117f1b4Smrg * Mesa 3-D graphics library
37117f1b4Smrg *
44a49301eSmrg * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
54a49301eSmrg * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
67117f1b4Smrg *
77117f1b4Smrg * Permission is hereby granted, free of charge, to any person obtaining a
87117f1b4Smrg * copy of this software and associated documentation files (the "Software"),
97117f1b4Smrg * to deal in the Software without restriction, including without limitation
107117f1b4Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
117117f1b4Smrg * and/or sell copies of the Software, and to permit persons to whom the
127117f1b4Smrg * Software is furnished to do so, subject to the following conditions:
137117f1b4Smrg *
147117f1b4Smrg * The above copyright notice and this permission notice shall be included
157117f1b4Smrg * in all copies or substantial portions of the Software.
167117f1b4Smrg *
177117f1b4Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
187117f1b4Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
197117f1b4Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20af69d88dSmrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
21af69d88dSmrg * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22af69d88dSmrg * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23af69d88dSmrg * OTHER DEALINGS IN THE SOFTWARE.
247117f1b4Smrg */
257117f1b4Smrg
267117f1b4Smrg
277117f1b4Smrg#ifndef VARRAY_H
287117f1b4Smrg#define VARRAY_H
297117f1b4Smrg
30af69d88dSmrg#include "bufferobj.h"
313464ebd5Sriastradh
327ec681f3Smrgstruct gl_interleaved_layout {
337ec681f3Smrg   bool tflag, cflag, nflag;      /* enable/disable flags */
347ec681f3Smrg   int tcomps, ccomps, vcomps;    /* components per texcoord, color, vertex */
357ec681f3Smrg   GLenum ctype;                  /* color type */
367ec681f3Smrg   int coffset, noffset, voffset; /* color, normal, vertex offsets */
377ec681f3Smrg   int toffset;                   /* always zero */
387ec681f3Smrg   int defstride;                 /* default stride */
397ec681f3Smrg};
407ec681f3Smrg
417ec681f3Smrgbool
427ec681f3Smrg_mesa_get_interleaved_layout(GLenum format,
437ec681f3Smrg                             struct gl_interleaved_layout *layout);
447ec681f3Smrg
45b9abf16eSmayavoid
46b9abf16eSmaya_mesa_set_vertex_format(struct gl_vertex_format *vertex_format,
47b9abf16eSmaya                        GLubyte size, GLenum16 type, GLenum16 format,
48b9abf16eSmaya                        GLboolean normalized, GLboolean integer,
49b9abf16eSmaya                        GLboolean doubles);
50b9abf16eSmaya
517117f1b4Smrg
52af69d88dSmrg/**
53af69d88dSmrg * Returns a pointer to the vertex attribute data in a client array,
54af69d88dSmrg * or the offset into the vertex buffer for an array that resides in
55af69d88dSmrg * a vertex buffer.
56af69d88dSmrg */
57af69d88dSmrgstatic inline const GLubyte *
5801e04c3fSmrg_mesa_vertex_attrib_address(const struct gl_array_attributes *array,
59af69d88dSmrg                            const struct gl_vertex_buffer_binding *binding)
60af69d88dSmrg{
617ec681f3Smrg   if (binding->BufferObj)
62af69d88dSmrg      return (const GLubyte *) (binding->Offset + array->RelativeOffset);
63af69d88dSmrg   else
6401e04c3fSmrg      return array->Ptr;
65af69d88dSmrg}
667117f1b4Smrg
677117f1b4Smrg
68af69d88dSmrgstatic inline bool
6901e04c3fSmrg_mesa_attr_zero_aliases_vertex(const struct gl_context *ctx)
70af69d88dSmrg{
7101e04c3fSmrg   return ctx->_AttribZeroAliasesVertex;
72af69d88dSmrg}
737117f1b4Smrg
7401e04c3fSmrg
7501e04c3fSmrgextern void
7601e04c3fSmrg_mesa_update_array_format(struct gl_context *ctx,
7701e04c3fSmrg                          struct gl_vertex_array_object *vao,
7801e04c3fSmrg                          gl_vert_attrib attrib, GLint size, GLenum type,
7901e04c3fSmrg                          GLenum format, GLboolean normalized,
8001e04c3fSmrg                          GLboolean integer, GLboolean doubles,
8101e04c3fSmrg                          GLuint relativeOffset);
8201e04c3fSmrg
8301e04c3fSmrgextern void
84b9abf16eSmaya_mesa_enable_vertex_array_attribs(struct gl_context *ctx,
85b9abf16eSmaya                                 struct gl_vertex_array_object *vao,
86b9abf16eSmaya                                 GLbitfield attrib_bits);
87b9abf16eSmaya
88b9abf16eSmayastatic inline void
8901e04c3fSmrg_mesa_enable_vertex_array_attrib(struct gl_context *ctx,
9001e04c3fSmrg                                 struct gl_vertex_array_object *vao,
91b9abf16eSmaya                                 gl_vert_attrib attrib)
92b9abf16eSmaya{
93b9abf16eSmaya   assert(attrib < VERT_ATTRIB_MAX);
94b9abf16eSmaya   _mesa_enable_vertex_array_attribs(ctx, vao, VERT_BIT(attrib));
95b9abf16eSmaya}
9601e04c3fSmrg
9701e04c3fSmrg
9801e04c3fSmrgextern void
99b9abf16eSmaya_mesa_disable_vertex_array_attribs(struct gl_context *ctx,
100b9abf16eSmaya                                   struct gl_vertex_array_object *vao,
101b9abf16eSmaya                                   GLbitfield attrib_bits);
102b9abf16eSmaya
103b9abf16eSmayastatic inline void
10401e04c3fSmrg_mesa_disable_vertex_array_attrib(struct gl_context *ctx,
10501e04c3fSmrg                                  struct gl_vertex_array_object *vao,
106b9abf16eSmaya                                  gl_vert_attrib attrib)
107b9abf16eSmaya{
108b9abf16eSmaya   assert(attrib < VERT_ATTRIB_MAX);
109b9abf16eSmaya   _mesa_disable_vertex_array_attribs(ctx, vao, VERT_BIT(attrib));
110b9abf16eSmaya}
11101e04c3fSmrg
11201e04c3fSmrg
11301e04c3fSmrgextern void
11401e04c3fSmrg_mesa_vertex_attrib_binding(struct gl_context *ctx,
11501e04c3fSmrg                            struct gl_vertex_array_object *vao,
11601e04c3fSmrg                            gl_vert_attrib attribIndex,
11701e04c3fSmrg                            GLuint bindingIndex);
11801e04c3fSmrg
11901e04c3fSmrg
12001e04c3fSmrgextern void
12101e04c3fSmrg_mesa_bind_vertex_buffer(struct gl_context *ctx,
12201e04c3fSmrg                         struct gl_vertex_array_object *vao,
12301e04c3fSmrg                         GLuint index,
12401e04c3fSmrg                         struct gl_buffer_object *vbo,
1257ec681f3Smrg                         GLintptr offset, GLsizei stride,
1267ec681f3Smrg                         bool offset_is_int32, bool take_vbo_ownership);
12701e04c3fSmrg
12801e04c3fSmrgextern void GLAPIENTRY
12901e04c3fSmrg_mesa_VertexPointer_no_error(GLint size, GLenum type, GLsizei stride,
13001e04c3fSmrg                             const GLvoid *ptr);
1317117f1b4Smrgextern void GLAPIENTRY
132af69d88dSmrg_mesa_VertexPointer(GLint size, GLenum type, GLsizei stride,
133af69d88dSmrg                    const GLvoid *ptr);
1347117f1b4Smrg
13501e04c3fSmrgextern void GLAPIENTRY
13601e04c3fSmrg_mesa_NormalPointer_no_error(GLenum type, GLsizei stride, const GLvoid *ptr);
1377117f1b4Smrgextern void GLAPIENTRY
1387117f1b4Smrg_mesa_NormalPointer(GLenum type, GLsizei stride, const GLvoid *ptr);
1397117f1b4Smrg
14001e04c3fSmrgextern void GLAPIENTRY
14101e04c3fSmrg_mesa_ColorPointer_no_error(GLint size, GLenum type, GLsizei stride,
14201e04c3fSmrg                            const GLvoid *ptr);
1437117f1b4Smrgextern void GLAPIENTRY
1447117f1b4Smrg_mesa_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr);
1457117f1b4Smrg
1467117f1b4Smrg
14701e04c3fSmrgextern void GLAPIENTRY
14801e04c3fSmrg_mesa_IndexPointer_no_error(GLenum type, GLsizei stride, const GLvoid *ptr);
1497117f1b4Smrgextern void GLAPIENTRY
1507117f1b4Smrg_mesa_IndexPointer(GLenum type, GLsizei stride, const GLvoid *ptr);
1517117f1b4Smrg
1527117f1b4Smrg
15301e04c3fSmrgextern void GLAPIENTRY
15401e04c3fSmrg_mesa_TexCoordPointer_no_error(GLint size, GLenum type, GLsizei stride,
15501e04c3fSmrg                               const GLvoid *ptr);
1567117f1b4Smrgextern void GLAPIENTRY
1577117f1b4Smrg_mesa_TexCoordPointer(GLint size, GLenum type, GLsizei stride,
1587117f1b4Smrg                      const GLvoid *ptr);
1597ec681f3Smrgextern void GLAPIENTRY
1607ec681f3Smrg_mesa_MultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type,
1617ec681f3Smrg                              GLsizei stride, const GLvoid *ptr);
1627117f1b4Smrg
16301e04c3fSmrgextern void GLAPIENTRY
16401e04c3fSmrg_mesa_EdgeFlagPointer_no_error(GLsizei stride, const GLvoid *ptr);
1657117f1b4Smrgextern void GLAPIENTRY
1667117f1b4Smrg_mesa_EdgeFlagPointer(GLsizei stride, const GLvoid *ptr);
1677117f1b4Smrg
1687117f1b4Smrg
1697117f1b4Smrgextern void GLAPIENTRY
1707117f1b4Smrg_mesa_VertexPointerEXT(GLint size, GLenum type, GLsizei stride,
1717117f1b4Smrg                       GLsizei count, const GLvoid *ptr);
1727117f1b4Smrg
1737117f1b4Smrg
1747117f1b4Smrgextern void GLAPIENTRY
1757117f1b4Smrg_mesa_NormalPointerEXT(GLenum type, GLsizei stride, GLsizei count,
1767117f1b4Smrg                       const GLvoid *ptr);
1777117f1b4Smrg
1787117f1b4Smrg
1797117f1b4Smrgextern void GLAPIENTRY
1807117f1b4Smrg_mesa_ColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count,
1817117f1b4Smrg                      const GLvoid *ptr);
1827117f1b4Smrg
1837117f1b4Smrg
1847117f1b4Smrgextern void GLAPIENTRY
1857117f1b4Smrg_mesa_IndexPointerEXT(GLenum type, GLsizei stride, GLsizei count,
1867117f1b4Smrg                      const GLvoid *ptr);
1877117f1b4Smrg
1887117f1b4Smrg
1897117f1b4Smrgextern void GLAPIENTRY
1907117f1b4Smrg_mesa_TexCoordPointerEXT(GLint size, GLenum type, GLsizei stride,
1917117f1b4Smrg                         GLsizei count, const GLvoid *ptr);
1927117f1b4Smrg
1937117f1b4Smrg
1947117f1b4Smrgextern void GLAPIENTRY
1957117f1b4Smrg_mesa_EdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *ptr);
1967117f1b4Smrg
19701e04c3fSmrgextern void GLAPIENTRY
19801e04c3fSmrg_mesa_FogCoordPointer_no_error(GLenum type, GLsizei stride,
19901e04c3fSmrg                               const GLvoid *ptr);
2007117f1b4Smrgextern void GLAPIENTRY
201af69d88dSmrg_mesa_FogCoordPointer(GLenum type, GLsizei stride, const GLvoid *ptr);
2027117f1b4Smrg
2037117f1b4Smrg
20401e04c3fSmrgextern void GLAPIENTRY
20501e04c3fSmrg_mesa_SecondaryColorPointer_no_error(GLint size, GLenum type,
20601e04c3fSmrg                                     GLsizei stride, const GLvoid *ptr);
2077117f1b4Smrgextern void GLAPIENTRY
208af69d88dSmrg_mesa_SecondaryColorPointer(GLint size, GLenum type,
20901e04c3fSmrg                            GLsizei stride, const GLvoid *ptr);
2107117f1b4Smrg
2117117f1b4Smrg
21201e04c3fSmrgextern void GLAPIENTRY
21301e04c3fSmrg_mesa_PointSizePointerOES_no_error(GLenum type, GLsizei stride,
21401e04c3fSmrg                                   const GLvoid *ptr);
215c1f859d4Smrgextern void GLAPIENTRY
216af69d88dSmrg_mesa_PointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *ptr);
217c1f859d4Smrg
218c1f859d4Smrg
21901e04c3fSmrgextern void GLAPIENTRY
22001e04c3fSmrg_mesa_VertexAttribPointer_no_error(GLuint index, GLint size, GLenum type,
22101e04c3fSmrg                                   GLboolean normalized, GLsizei stride,
22201e04c3fSmrg                                   const GLvoid *pointer);
2237117f1b4Smrgextern void GLAPIENTRY
224af69d88dSmrg_mesa_VertexAttribPointer(GLuint index, GLint size, GLenum type,
22501e04c3fSmrg                          GLboolean normalized, GLsizei stride,
22601e04c3fSmrg                          const GLvoid *pointer);
2277117f1b4Smrg
2283464ebd5Sriastradhvoid GLAPIENTRY
22901e04c3fSmrg_mesa_VertexAttribIPointer_no_error(GLuint index, GLint size, GLenum type,
23001e04c3fSmrg                                    GLsizei stride, const GLvoid *ptr);
23101e04c3fSmrgvoid GLAPIENTRY
2323464ebd5Sriastradh_mesa_VertexAttribIPointer(GLuint index, GLint size, GLenum type,
2333464ebd5Sriastradh                           GLsizei stride, const GLvoid *ptr);
2343464ebd5Sriastradh
23501e04c3fSmrgextern void GLAPIENTRY
23601e04c3fSmrg_mesa_VertexAttribLPointer_no_error(GLuint index, GLint size, GLenum type,
23701e04c3fSmrg                                    GLsizei stride, const GLvoid *pointer);
23801e04c3fSmrgextern void GLAPIENTRY
23901e04c3fSmrg_mesa_VertexAttribLPointer(GLuint index, GLint size, GLenum type,
24001e04c3fSmrg                           GLsizei stride, const GLvoid *pointer);
2413464ebd5Sriastradh
2423464ebd5Sriastradhextern void GLAPIENTRY
243af69d88dSmrg_mesa_EnableVertexAttribArray(GLuint index);
2443464ebd5Sriastradh
2453464ebd5Sriastradhextern void GLAPIENTRY
24601e04c3fSmrg_mesa_EnableVertexAttribArray_no_error(GLuint index);
2473464ebd5Sriastradh
2483464ebd5Sriastradh
2493464ebd5Sriastradhextern void GLAPIENTRY
25001e04c3fSmrg_mesa_EnableVertexArrayAttrib(GLuint vaobj, GLuint index);
2513464ebd5Sriastradh
2523464ebd5Sriastradhextern void GLAPIENTRY
25301e04c3fSmrg_mesa_EnableVertexArrayAttrib_no_error(GLuint vaobj, GLuint index);
2543464ebd5Sriastradh
2557ec681f3Smrgextern void GLAPIENTRY
2567ec681f3Smrg_mesa_EnableVertexArrayAttribEXT( GLuint vaobj, GLuint index );
2573464ebd5Sriastradh
2583464ebd5Sriastradh
25901e04c3fSmrgextern void GLAPIENTRY
26001e04c3fSmrg_mesa_DisableVertexAttribArray(GLuint index);
2613464ebd5Sriastradh
2623464ebd5Sriastradhextern void GLAPIENTRY
26301e04c3fSmrg_mesa_DisableVertexAttribArray_no_error(GLuint index);
2643464ebd5Sriastradh
2653464ebd5Sriastradh
2663464ebd5Sriastradhextern void GLAPIENTRY
26701e04c3fSmrg_mesa_DisableVertexArrayAttrib(GLuint vaobj, GLuint index);
2683464ebd5Sriastradh
2693464ebd5Sriastradhextern void GLAPIENTRY
27001e04c3fSmrg_mesa_DisableVertexArrayAttrib_no_error(GLuint vaobj, GLuint index);
2713464ebd5Sriastradh
2727ec681f3Smrgextern void GLAPIENTRY
2737ec681f3Smrg_mesa_DisableVertexArrayAttribEXT( GLuint vaobj, GLuint index );
2747117f1b4Smrg
2757117f1b4Smrgextern void GLAPIENTRY
27601e04c3fSmrg_mesa_GetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params);
2777117f1b4Smrg
2787117f1b4Smrgextern void GLAPIENTRY
27901e04c3fSmrg_mesa_GetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params);
2807117f1b4Smrg
2817117f1b4Smrgextern void GLAPIENTRY
28201e04c3fSmrg_mesa_GetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params);
2837117f1b4Smrg
2844a49301eSmrgextern void GLAPIENTRY
28501e04c3fSmrg_mesa_GetVertexAttribiv(GLuint index, GLenum pname, GLint *params);
2867117f1b4Smrg
2877117f1b4Smrgextern void GLAPIENTRY
28801e04c3fSmrg_mesa_GetVertexAttribLui64vARB(GLuint index, GLenum pname, GLuint64EXT *params);
2897117f1b4Smrg
2907117f1b4Smrg
2917117f1b4Smrgextern void GLAPIENTRY
29201e04c3fSmrg_mesa_GetVertexAttribIiv(GLuint index, GLenum pname, GLint *params);
2937117f1b4Smrg
294c1f859d4Smrg
295c1f859d4Smrgextern void GLAPIENTRY
29601e04c3fSmrg_mesa_GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params);
2977117f1b4Smrg
2984a49301eSmrg
2994a49301eSmrgextern void GLAPIENTRY
30001e04c3fSmrg_mesa_GetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid **pointer);
3014a49301eSmrg
302af69d88dSmrg
30301e04c3fSmrgvoid GLAPIENTRY
30401e04c3fSmrg_mesa_GetVertexArrayIndexediv(GLuint vaobj, GLuint index,
30501e04c3fSmrg                              GLenum pname, GLint *param);
30601e04c3fSmrg
30701e04c3fSmrg
30801e04c3fSmrgvoid GLAPIENTRY
30901e04c3fSmrg_mesa_GetVertexArrayIndexed64iv(GLuint vaobj, GLuint index,
31001e04c3fSmrg                                GLenum pname, GLint64 *param);
3114a49301eSmrg
3124a49301eSmrg
3134a49301eSmrgextern void GLAPIENTRY
31401e04c3fSmrg_mesa_InterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer);
31501e04c3fSmrg
3164a49301eSmrg
3174a49301eSmrgextern void GLAPIENTRY
31801e04c3fSmrg_mesa_LockArraysEXT(GLint first, GLsizei count);
3194a49301eSmrg
320af69d88dSmrgextern void GLAPIENTRY
32101e04c3fSmrg_mesa_UnlockArraysEXT(void);
32201e04c3fSmrg
32301e04c3fSmrg
32401e04c3fSmrgvoid GLAPIENTRY
32501e04c3fSmrg_mesa_PrimitiveRestartIndex_no_error(GLuint index);
326af69d88dSmrg
3273464ebd5Sriastradhextern void GLAPIENTRY
3283464ebd5Sriastradh_mesa_PrimitiveRestartIndex(GLuint index);
3293464ebd5Sriastradh
33001e04c3fSmrgextern void GLAPIENTRY
33101e04c3fSmrg_mesa_VertexAttribDivisor_no_error(GLuint index, GLuint divisor);
3323464ebd5Sriastradhextern void GLAPIENTRY
3333464ebd5Sriastradh_mesa_VertexAttribDivisor(GLuint index, GLuint divisor);
3347ec681f3Smrgextern void GLAPIENTRY
3357ec681f3Smrg_mesa_VertexArrayVertexAttribDivisorEXT(GLuint vaobj, GLuint index, GLuint divisor);
3363464ebd5Sriastradh
33701e04c3fSmrgstatic inline unsigned
3387ec681f3Smrg_mesa_get_prim_restart_index(bool fixed_index, unsigned restart_index,
3397ec681f3Smrg                             unsigned index_size)
34001e04c3fSmrg{
3417ec681f3Smrg   /* The index_size parameter is meant to be in bytes. */
342b9abf16eSmaya   assert(index_size == 1 || index_size == 2 || index_size == 4);
343b9abf16eSmaya
34401e04c3fSmrg   /* From the OpenGL 4.3 core specification, page 302:
34501e04c3fSmrg    * "If both PRIMITIVE_RESTART and PRIMITIVE_RESTART_FIXED_INDEX are
34601e04c3fSmrg    *  enabled, the index value determined by PRIMITIVE_RESTART_FIXED_INDEX
34701e04c3fSmrg    *  is used."
34801e04c3fSmrg    */
3497ec681f3Smrg   if (fixed_index) {
35001e04c3fSmrg      /* 1 -> 0xff, 2 -> 0xffff, 4 -> 0xffffffff */
35101e04c3fSmrg      return 0xffffffffu >> 8 * (4 - index_size);
35201e04c3fSmrg   }
35301e04c3fSmrg
3547ec681f3Smrg   return restart_index;
3557ec681f3Smrg}
3567ec681f3Smrg
3577ec681f3Smrgstatic inline unsigned
3587ec681f3Smrg_mesa_primitive_restart_index(const struct gl_context *ctx,
3597ec681f3Smrg                              unsigned index_size)
3607ec681f3Smrg{
3617ec681f3Smrg   return _mesa_get_prim_restart_index(ctx->Array.PrimitiveRestartFixedIndex,
3627ec681f3Smrg                                       ctx->Array.RestartIndex, index_size);
36301e04c3fSmrg}
364af69d88dSmrg
36501e04c3fSmrgextern void GLAPIENTRY
36601e04c3fSmrg_mesa_BindVertexBuffer_no_error(GLuint bindingIndex, GLuint buffer,
36701e04c3fSmrg                                GLintptr offset, GLsizei stride);
368af69d88dSmrgextern void GLAPIENTRY
369af69d88dSmrg_mesa_BindVertexBuffer(GLuint bindingIndex, GLuint buffer, GLintptr offset,
370af69d88dSmrg                       GLsizei stride);
371af69d88dSmrg
37201e04c3fSmrgvoid GLAPIENTRY
37301e04c3fSmrg_mesa_VertexArrayVertexBuffer_no_error(GLuint vaobj, GLuint bindingIndex,
37401e04c3fSmrg                                       GLuint buffer, GLintptr offset,
37501e04c3fSmrg                                       GLsizei stride);
37601e04c3fSmrgextern void GLAPIENTRY
37701e04c3fSmrg_mesa_VertexArrayVertexBuffer(GLuint vaobj, GLuint bindingIndex, GLuint buffer,
37801e04c3fSmrg                              GLintptr offset, GLsizei stride);
37901e04c3fSmrg
3807ec681f3Smrgextern void GLAPIENTRY
3817ec681f3Smrg_mesa_VertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingIndex, GLuint buffer,
3827ec681f3Smrg                                     GLintptr offset, GLsizei stride);
3837ec681f3Smrg
38401e04c3fSmrgvoid GLAPIENTRY
38501e04c3fSmrg_mesa_BindVertexBuffers_no_error(GLuint first, GLsizei count,
38601e04c3fSmrg                                 const GLuint *buffers, const GLintptr *offsets,
38701e04c3fSmrg                                 const GLsizei *strides);
38801e04c3fSmrg
389af69d88dSmrgextern void GLAPIENTRY
390af69d88dSmrg_mesa_BindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers,
391af69d88dSmrg                        const GLintptr *offsets, const GLsizei *strides);
392af69d88dSmrg
3937ec681f3Smrgvoid
3947ec681f3Smrg_mesa_InternalBindVertexBuffers(struct gl_context *ctx,
3957ec681f3Smrg                                const struct glthread_attrib_binding *buffers,
3967ec681f3Smrg                                GLbitfield buffer_mask,
3977ec681f3Smrg                                GLboolean restore_pointers);
3987ec681f3Smrg
39901e04c3fSmrgvoid GLAPIENTRY
40001e04c3fSmrg_mesa_VertexArrayVertexBuffers_no_error(GLuint vaobj, GLuint first,
40101e04c3fSmrg                                        GLsizei count, const GLuint *buffers,
40201e04c3fSmrg                                        const GLintptr *offsets,
40301e04c3fSmrg                                        const GLsizei *strides);
40401e04c3fSmrg
40501e04c3fSmrgextern void GLAPIENTRY
40601e04c3fSmrg_mesa_VertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count,
40701e04c3fSmrg                               const GLuint *buffers,
40801e04c3fSmrg                               const GLintptr *offsets, const GLsizei *strides);
40901e04c3fSmrg
410af69d88dSmrgextern void GLAPIENTRY
411af69d88dSmrg_mesa_VertexAttribFormat(GLuint attribIndex, GLint size, GLenum type,
412af69d88dSmrg                         GLboolean normalized, GLuint relativeOffset);
413af69d88dSmrg
41401e04c3fSmrgextern void GLAPIENTRY
41501e04c3fSmrg_mesa_VertexArrayAttribFormat(GLuint vaobj, GLuint attribIndex, GLint size,
41601e04c3fSmrg                              GLenum type, GLboolean normalized,
41701e04c3fSmrg                              GLuint relativeOffset);
41801e04c3fSmrg
4197ec681f3Smrgextern void GLAPIENTRY
4207ec681f3Smrg_mesa_VertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribIndex, GLint size,
4217ec681f3Smrg                                       GLenum type, GLboolean normalized,
4227ec681f3Smrg                                       GLuint relativeOffset);
4237ec681f3Smrg
424af69d88dSmrgextern void GLAPIENTRY
425af69d88dSmrg_mesa_VertexAttribIFormat(GLuint attribIndex, GLint size, GLenum type,
426af69d88dSmrg                          GLuint relativeOffset);
427af69d88dSmrg
42801e04c3fSmrgextern void GLAPIENTRY
42901e04c3fSmrg_mesa_VertexArrayAttribIFormat(GLuint vaobj, GLuint attribIndex,
43001e04c3fSmrg                               GLint size, GLenum type,
43101e04c3fSmrg                               GLuint relativeOffset);
43201e04c3fSmrg
4337ec681f3Smrgextern void GLAPIENTRY
4347ec681f3Smrg_mesa_VertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribIndex,
4357ec681f3Smrg                                        GLint size, GLenum type,
4367ec681f3Smrg                                        GLuint relativeOffset);
4377ec681f3Smrg
438af69d88dSmrgextern void GLAPIENTRY
439af69d88dSmrg_mesa_VertexAttribLFormat(GLuint attribIndex, GLint size, GLenum type,
440af69d88dSmrg                          GLuint relativeOffset);
441af69d88dSmrg
44201e04c3fSmrgextern void GLAPIENTRY
44301e04c3fSmrg_mesa_VertexArrayAttribLFormat(GLuint vaobj, GLuint attribIndex,
44401e04c3fSmrg                               GLint size, GLenum type,
44501e04c3fSmrg                               GLuint relativeOffset);
44601e04c3fSmrg
4477ec681f3Smrgextern void GLAPIENTRY
4487ec681f3Smrg_mesa_VertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribIndex,
4497ec681f3Smrg                                        GLint size, GLenum type,
4507ec681f3Smrg                                        GLuint relativeOffset);
4517ec681f3Smrg
45201e04c3fSmrgvoid GLAPIENTRY
45301e04c3fSmrg_mesa_VertexAttribBinding_no_error(GLuint attribIndex, GLuint bindingIndex);
45401e04c3fSmrg
455af69d88dSmrgextern void GLAPIENTRY
456af69d88dSmrg_mesa_VertexAttribBinding(GLuint attribIndex, GLuint bindingIndex);
457af69d88dSmrg
45801e04c3fSmrgvoid GLAPIENTRY
45901e04c3fSmrg_mesa_VertexArrayAttribBinding_no_error(GLuint vaobj, GLuint attribIndex,
46001e04c3fSmrg                                        GLuint bindingIndex);
46101e04c3fSmrg
46201e04c3fSmrgextern void GLAPIENTRY
46301e04c3fSmrg_mesa_VertexArrayAttribBinding(GLuint vaobj, GLuint attribIndex,
46401e04c3fSmrg                               GLuint bindingIndex);
46501e04c3fSmrg
4667ec681f3Smrgextern void GLAPIENTRY
4677ec681f3Smrg_mesa_VertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribIndex,
4687ec681f3Smrg                                        GLuint bindingIndex);
4697ec681f3Smrg
47001e04c3fSmrgvoid GLAPIENTRY
47101e04c3fSmrg_mesa_VertexBindingDivisor_no_error(GLuint bindingIndex, GLuint divisor);
47201e04c3fSmrg
473af69d88dSmrgextern void GLAPIENTRY
474af69d88dSmrg_mesa_VertexBindingDivisor(GLuint bindingIndex, GLuint divisor);
475af69d88dSmrg
47601e04c3fSmrgvoid GLAPIENTRY
47701e04c3fSmrg_mesa_VertexArrayBindingDivisor_no_error(GLuint vaobj, GLuint bindingIndex,
47801e04c3fSmrg                                         GLuint divisor);
47901e04c3fSmrg
48001e04c3fSmrgextern void GLAPIENTRY
48101e04c3fSmrg_mesa_VertexArrayBindingDivisor(GLuint vaobj, GLuint bindingIndex,
48201e04c3fSmrg                                GLuint divisor);
4834a49301eSmrg
4847ec681f3Smrgextern void GLAPIENTRY
4857ec681f3Smrg_mesa_VertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingIndex,
4867ec681f3Smrg                                         GLuint divisor);
4874a49301eSmrg
4884a49301eSmrgextern void
4893464ebd5Sriastradh_mesa_print_arrays(struct gl_context *ctx);
4904a49301eSmrg
4917117f1b4Smrgextern void
49201e04c3fSmrg_mesa_init_varray(struct gl_context *ctx);
4937117f1b4Smrg
49401e04c3fSmrgextern void
4953464ebd5Sriastradh_mesa_free_varray_data(struct gl_context *ctx);
4964a49301eSmrg
4977ec681f3Smrgextern void GLAPIENTRY
4987ec681f3Smrg_mesa_VertexArrayVertexOffsetEXT(GLuint vaobj, GLuint buffer, GLint size,
4997ec681f3Smrg                                 GLenum type, GLsizei stride, GLintptr offset);
5007ec681f3Smrg
5017ec681f3Smrgextern void GLAPIENTRY
5027ec681f3Smrg_mesa_VertexArrayColorOffsetEXT(GLuint vaobj, GLuint buffer, GLint size,
5037ec681f3Smrg                                GLenum type, GLsizei stride, GLintptr offset);
5047ec681f3Smrg
5057ec681f3Smrgextern void GLAPIENTRY
5067ec681f3Smrg_mesa_VertexArrayEdgeFlagOffsetEXT(GLuint vaobj, GLuint buffer, GLsizei stride,
5077ec681f3Smrg                                   GLintptr offset);
5087ec681f3Smrg
5097ec681f3Smrgextern void GLAPIENTRY
5107ec681f3Smrg_mesa_VertexArrayIndexOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type,
5117ec681f3Smrg                                GLsizei stride, GLintptr offset);
5127ec681f3Smrg
5137ec681f3Smrgextern void GLAPIENTRY
5147ec681f3Smrg_mesa_VertexArrayNormalOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type,
5157ec681f3Smrg                                 GLsizei stride, GLintptr offset);
5167ec681f3Smrg
5177ec681f3Smrgextern void GLAPIENTRY
5187ec681f3Smrg_mesa_VertexArrayTexCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLint size,
5197ec681f3Smrg                                   GLenum type, GLsizei stride, GLintptr offset);
5207ec681f3Smrg
5217ec681f3Smrgextern void GLAPIENTRY
5227ec681f3Smrg_mesa_VertexArrayMultiTexCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLenum texunit,
5237ec681f3Smrg                                        GLint size, GLenum type, GLsizei stride,
5247ec681f3Smrg                                        GLintptr offset);
5257ec681f3Smrg
5267ec681f3Smrgextern void GLAPIENTRY
5277ec681f3Smrg_mesa_VertexArrayFogCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type,
5287ec681f3Smrg                                   GLsizei stride, GLintptr offset);
5297ec681f3Smrg
5307ec681f3Smrgextern void GLAPIENTRY
5317ec681f3Smrg_mesa_VertexArraySecondaryColorOffsetEXT(GLuint vaobj, GLuint buffer, GLint size,
5327ec681f3Smrg                                         GLenum type, GLsizei stride, GLintptr offset);
5337ec681f3Smrg
5347ec681f3Smrgextern void GLAPIENTRY
5357ec681f3Smrg_mesa_VertexArrayVertexAttribOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size,
5367ec681f3Smrg                                       GLenum type, GLboolean normalized,
5377ec681f3Smrg                                       GLsizei stride, GLintptr offset);
5387ec681f3Smrg
5397ec681f3Smrgextern void GLAPIENTRY
5407ec681f3Smrg_mesa_VertexArrayVertexAttribIOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size,
5417ec681f3Smrg                                        GLenum type, GLsizei stride, GLintptr offset);
5427ec681f3Smrg
5437ec681f3Smrgextern void GLAPIENTRY
5447ec681f3Smrg_mesa_VertexArrayVertexAttribLOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size,
5457ec681f3Smrg                                        GLenum type, GLsizei stride, GLintptr offset);
5467ec681f3Smrg
5477ec681f3Smrgextern void GLAPIENTRY
5487ec681f3Smrg_mesa_GetVertexArrayIntegervEXT(GLuint vaobj, GLenum pname, GLint *param);
5497ec681f3Smrg
5507ec681f3Smrgextern void GLAPIENTRY
5517ec681f3Smrg_mesa_GetVertexArrayPointervEXT(GLuint vaobj, GLenum pname, GLvoid** param);
5527ec681f3Smrg
5537ec681f3Smrgextern void GLAPIENTRY
5547ec681f3Smrg_mesa_GetVertexArrayIntegeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, GLint *param);
5557ec681f3Smrg
5567ec681f3Smrgextern void GLAPIENTRY
5577ec681f3Smrg_mesa_GetVertexArrayPointeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, GLvoid** param);
5587ec681f3Smrg
5597117f1b4Smrg#endif
560