• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Mesa 3-D graphics library
3  *
4  * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
5  * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining a
8  * copy of this software and associated documentation files (the "Software"),
9  * to deal in the Software without restriction, including without limitation
10  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11  * and/or sell copies of the Software, and to permit persons to whom the
12  * Software is furnished to do so, subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be included
15  * in all copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
21  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23  * OTHER DEALINGS IN THE SOFTWARE.
24  */
25 
26 
27 #ifndef VARRAY_H
28 #define VARRAY_H
29 
30 #include "bufferobj.h"
31 
32 struct gl_interleaved_layout {
33    bool tflag, cflag, nflag;      /* enable/disable flags */
34    int tcomps, ccomps, vcomps;    /* components per texcoord, color, vertex */
35    GLenum ctype;                  /* color type */
36    int coffset, noffset, voffset; /* color, normal, vertex offsets */
37    int toffset;                   /* always zero */
38    int defstride;                 /* default stride */
39 };
40 
41 bool
42 _mesa_get_interleaved_layout(GLenum format,
43                              struct gl_interleaved_layout *layout);
44 
45 void
46 _mesa_set_vertex_format(struct gl_vertex_format *vertex_format,
47                         GLubyte size, GLenum16 type, GLenum16 format,
48                         GLboolean normalized, GLboolean integer,
49                         GLboolean doubles);
50 
51 
52 /**
53  * Returns a pointer to the vertex attribute data in a client array,
54  * or the offset into the vertex buffer for an array that resides in
55  * a vertex buffer.
56  */
57 static inline const GLubyte *
_mesa_vertex_attrib_address(const struct gl_array_attributes * array,const struct gl_vertex_buffer_binding * binding)58 _mesa_vertex_attrib_address(const struct gl_array_attributes *array,
59                             const struct gl_vertex_buffer_binding *binding)
60 {
61    if (binding->BufferObj)
62       return (const GLubyte *) (binding->Offset + array->RelativeOffset);
63    else
64       return array->Ptr;
65 }
66 
67 
68 static inline bool
_mesa_attr_zero_aliases_vertex(const struct gl_context * ctx)69 _mesa_attr_zero_aliases_vertex(const struct gl_context *ctx)
70 {
71    return ctx->_AttribZeroAliasesVertex;
72 }
73 
74 
75 extern void
76 _mesa_update_array_format(struct gl_context *ctx,
77                           struct gl_vertex_array_object *vao,
78                           gl_vert_attrib attrib, GLint size, GLenum type,
79                           GLenum format, GLboolean normalized,
80                           GLboolean integer, GLboolean doubles,
81                           GLuint relativeOffset);
82 
83 extern void
84 _mesa_enable_vertex_array_attribs(struct gl_context *ctx,
85                                  struct gl_vertex_array_object *vao,
86                                  GLbitfield attrib_bits);
87 
88 static inline void
_mesa_enable_vertex_array_attrib(struct gl_context * ctx,struct gl_vertex_array_object * vao,gl_vert_attrib attrib)89 _mesa_enable_vertex_array_attrib(struct gl_context *ctx,
90                                  struct gl_vertex_array_object *vao,
91                                  gl_vert_attrib attrib)
92 {
93    assert(attrib < VERT_ATTRIB_MAX);
94    _mesa_enable_vertex_array_attribs(ctx, vao, VERT_BIT(attrib));
95 }
96 
97 
98 extern void
99 _mesa_disable_vertex_array_attribs(struct gl_context *ctx,
100                                    struct gl_vertex_array_object *vao,
101                                    GLbitfield attrib_bits);
102 
103 static inline void
_mesa_disable_vertex_array_attrib(struct gl_context * ctx,struct gl_vertex_array_object * vao,gl_vert_attrib attrib)104 _mesa_disable_vertex_array_attrib(struct gl_context *ctx,
105                                   struct gl_vertex_array_object *vao,
106                                   gl_vert_attrib attrib)
107 {
108    assert(attrib < VERT_ATTRIB_MAX);
109    _mesa_disable_vertex_array_attribs(ctx, vao, VERT_BIT(attrib));
110 }
111 
112 
113 extern void
114 _mesa_vertex_attrib_binding(struct gl_context *ctx,
115                             struct gl_vertex_array_object *vao,
116                             gl_vert_attrib attribIndex,
117                             GLuint bindingIndex);
118 
119 
120 extern void
121 _mesa_bind_vertex_buffer(struct gl_context *ctx,
122                          struct gl_vertex_array_object *vao,
123                          GLuint index,
124                          struct gl_buffer_object *vbo,
125                          GLintptr offset, GLsizei stride,
126                          bool offset_is_int32, bool take_vbo_ownership);
127 
128 extern void GLAPIENTRY
129 _mesa_VertexPointer_no_error(GLint size, GLenum type, GLsizei stride,
130                              const GLvoid *ptr);
131 extern void GLAPIENTRY
132 _mesa_VertexPointer(GLint size, GLenum type, GLsizei stride,
133                     const GLvoid *ptr);
134 
135 extern void GLAPIENTRY
136 _mesa_NormalPointer_no_error(GLenum type, GLsizei stride, const GLvoid *ptr);
137 extern void GLAPIENTRY
138 _mesa_NormalPointer(GLenum type, GLsizei stride, const GLvoid *ptr);
139 
140 extern void GLAPIENTRY
141 _mesa_ColorPointer_no_error(GLint size, GLenum type, GLsizei stride,
142                             const GLvoid *ptr);
143 extern void GLAPIENTRY
144 _mesa_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr);
145 
146 
147 extern void GLAPIENTRY
148 _mesa_IndexPointer_no_error(GLenum type, GLsizei stride, const GLvoid *ptr);
149 extern void GLAPIENTRY
150 _mesa_IndexPointer(GLenum type, GLsizei stride, const GLvoid *ptr);
151 
152 
153 extern void GLAPIENTRY
154 _mesa_TexCoordPointer_no_error(GLint size, GLenum type, GLsizei stride,
155                                const GLvoid *ptr);
156 extern void GLAPIENTRY
157 _mesa_TexCoordPointer(GLint size, GLenum type, GLsizei stride,
158                       const GLvoid *ptr);
159 extern void GLAPIENTRY
160 _mesa_MultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type,
161                               GLsizei stride, const GLvoid *ptr);
162 
163 extern void GLAPIENTRY
164 _mesa_EdgeFlagPointer_no_error(GLsizei stride, const GLvoid *ptr);
165 extern void GLAPIENTRY
166 _mesa_EdgeFlagPointer(GLsizei stride, const GLvoid *ptr);
167 
168 
169 extern void GLAPIENTRY
170 _mesa_VertexPointerEXT(GLint size, GLenum type, GLsizei stride,
171                        GLsizei count, const GLvoid *ptr);
172 
173 
174 extern void GLAPIENTRY
175 _mesa_NormalPointerEXT(GLenum type, GLsizei stride, GLsizei count,
176                        const GLvoid *ptr);
177 
178 
179 extern void GLAPIENTRY
180 _mesa_ColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count,
181                       const GLvoid *ptr);
182 
183 
184 extern void GLAPIENTRY
185 _mesa_IndexPointerEXT(GLenum type, GLsizei stride, GLsizei count,
186                       const GLvoid *ptr);
187 
188 
189 extern void GLAPIENTRY
190 _mesa_TexCoordPointerEXT(GLint size, GLenum type, GLsizei stride,
191                          GLsizei count, const GLvoid *ptr);
192 
193 
194 extern void GLAPIENTRY
195 _mesa_EdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *ptr);
196 
197 extern void GLAPIENTRY
198 _mesa_FogCoordPointer_no_error(GLenum type, GLsizei stride,
199                                const GLvoid *ptr);
200 extern void GLAPIENTRY
201 _mesa_FogCoordPointer(GLenum type, GLsizei stride, const GLvoid *ptr);
202 
203 
204 extern void GLAPIENTRY
205 _mesa_SecondaryColorPointer_no_error(GLint size, GLenum type,
206                                      GLsizei stride, const GLvoid *ptr);
207 extern void GLAPIENTRY
208 _mesa_SecondaryColorPointer(GLint size, GLenum type,
209                             GLsizei stride, const GLvoid *ptr);
210 
211 
212 extern void GLAPIENTRY
213 _mesa_PointSizePointerOES_no_error(GLenum type, GLsizei stride,
214                                    const GLvoid *ptr);
215 extern void GLAPIENTRY
216 _mesa_PointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *ptr);
217 
218 
219 extern void GLAPIENTRY
220 _mesa_VertexAttribPointer_no_error(GLuint index, GLint size, GLenum type,
221                                    GLboolean normalized, GLsizei stride,
222                                    const GLvoid *pointer);
223 extern void GLAPIENTRY
224 _mesa_VertexAttribPointer(GLuint index, GLint size, GLenum type,
225                           GLboolean normalized, GLsizei stride,
226                           const GLvoid *pointer);
227 
228 void GLAPIENTRY
229 _mesa_VertexAttribIPointer_no_error(GLuint index, GLint size, GLenum type,
230                                     GLsizei stride, const GLvoid *ptr);
231 void GLAPIENTRY
232 _mesa_VertexAttribIPointer(GLuint index, GLint size, GLenum type,
233                            GLsizei stride, const GLvoid *ptr);
234 
235 extern void GLAPIENTRY
236 _mesa_VertexAttribLPointer_no_error(GLuint index, GLint size, GLenum type,
237                                     GLsizei stride, const GLvoid *pointer);
238 extern void GLAPIENTRY
239 _mesa_VertexAttribLPointer(GLuint index, GLint size, GLenum type,
240                            GLsizei stride, const GLvoid *pointer);
241 
242 extern void GLAPIENTRY
243 _mesa_EnableVertexAttribArray(GLuint index);
244 
245 extern void GLAPIENTRY
246 _mesa_EnableVertexAttribArray_no_error(GLuint index);
247 
248 
249 extern void GLAPIENTRY
250 _mesa_EnableVertexArrayAttrib(GLuint vaobj, GLuint index);
251 
252 extern void GLAPIENTRY
253 _mesa_EnableVertexArrayAttrib_no_error(GLuint vaobj, GLuint index);
254 
255 extern void GLAPIENTRY
256 _mesa_EnableVertexArrayAttribEXT( GLuint vaobj, GLuint index );
257 
258 
259 extern void GLAPIENTRY
260 _mesa_DisableVertexAttribArray(GLuint index);
261 
262 extern void GLAPIENTRY
263 _mesa_DisableVertexAttribArray_no_error(GLuint index);
264 
265 
266 extern void GLAPIENTRY
267 _mesa_DisableVertexArrayAttrib(GLuint vaobj, GLuint index);
268 
269 extern void GLAPIENTRY
270 _mesa_DisableVertexArrayAttrib_no_error(GLuint vaobj, GLuint index);
271 
272 extern void GLAPIENTRY
273 _mesa_DisableVertexArrayAttribEXT( GLuint vaobj, GLuint index );
274 
275 extern void GLAPIENTRY
276 _mesa_GetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params);
277 
278 extern void GLAPIENTRY
279 _mesa_GetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params);
280 
281 extern void GLAPIENTRY
282 _mesa_GetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params);
283 
284 extern void GLAPIENTRY
285 _mesa_GetVertexAttribiv(GLuint index, GLenum pname, GLint *params);
286 
287 extern void GLAPIENTRY
288 _mesa_GetVertexAttribLui64vARB(GLuint index, GLenum pname, GLuint64EXT *params);
289 
290 
291 extern void GLAPIENTRY
292 _mesa_GetVertexAttribIiv(GLuint index, GLenum pname, GLint *params);
293 
294 
295 extern void GLAPIENTRY
296 _mesa_GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params);
297 
298 
299 extern void GLAPIENTRY
300 _mesa_GetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid **pointer);
301 
302 
303 void GLAPIENTRY
304 _mesa_GetVertexArrayIndexediv(GLuint vaobj, GLuint index,
305                               GLenum pname, GLint *param);
306 
307 
308 void GLAPIENTRY
309 _mesa_GetVertexArrayIndexed64iv(GLuint vaobj, GLuint index,
310                                 GLenum pname, GLint64 *param);
311 
312 
313 extern void GLAPIENTRY
314 _mesa_InterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer);
315 
316 
317 extern void GLAPIENTRY
318 _mesa_LockArraysEXT(GLint first, GLsizei count);
319 
320 extern void GLAPIENTRY
321 _mesa_UnlockArraysEXT(void);
322 
323 
324 void GLAPIENTRY
325 _mesa_PrimitiveRestartIndex_no_error(GLuint index);
326 
327 extern void GLAPIENTRY
328 _mesa_PrimitiveRestartIndex(GLuint index);
329 
330 extern void GLAPIENTRY
331 _mesa_VertexAttribDivisor_no_error(GLuint index, GLuint divisor);
332 extern void GLAPIENTRY
333 _mesa_VertexAttribDivisor(GLuint index, GLuint divisor);
334 extern void GLAPIENTRY
335 _mesa_VertexArrayVertexAttribDivisorEXT(GLuint vaobj, GLuint index, GLuint divisor);
336 
337 static inline unsigned
_mesa_get_prim_restart_index(bool fixed_index,unsigned restart_index,unsigned index_size)338 _mesa_get_prim_restart_index(bool fixed_index, unsigned restart_index,
339                              unsigned index_size)
340 {
341    /* The index_size parameter is meant to be in bytes. */
342    assert(index_size == 1 || index_size == 2 || index_size == 4);
343 
344    /* From the OpenGL 4.3 core specification, page 302:
345     * "If both PRIMITIVE_RESTART and PRIMITIVE_RESTART_FIXED_INDEX are
346     *  enabled, the index value determined by PRIMITIVE_RESTART_FIXED_INDEX
347     *  is used."
348     */
349    if (fixed_index) {
350       /* 1 -> 0xff, 2 -> 0xffff, 4 -> 0xffffffff */
351       return 0xffffffffu >> 8 * (4 - index_size);
352    }
353 
354    return restart_index;
355 }
356 
357 static inline unsigned
_mesa_primitive_restart_index(const struct gl_context * ctx,unsigned index_size)358 _mesa_primitive_restart_index(const struct gl_context *ctx,
359                               unsigned index_size)
360 {
361    return _mesa_get_prim_restart_index(ctx->Array.PrimitiveRestartFixedIndex,
362                                        ctx->Array.RestartIndex, index_size);
363 }
364 
365 extern void GLAPIENTRY
366 _mesa_BindVertexBuffer_no_error(GLuint bindingIndex, GLuint buffer,
367                                 GLintptr offset, GLsizei stride);
368 extern void GLAPIENTRY
369 _mesa_BindVertexBuffer(GLuint bindingIndex, GLuint buffer, GLintptr offset,
370                        GLsizei stride);
371 
372 void GLAPIENTRY
373 _mesa_VertexArrayVertexBuffer_no_error(GLuint vaobj, GLuint bindingIndex,
374                                        GLuint buffer, GLintptr offset,
375                                        GLsizei stride);
376 extern void GLAPIENTRY
377 _mesa_VertexArrayVertexBuffer(GLuint vaobj, GLuint bindingIndex, GLuint buffer,
378                               GLintptr offset, GLsizei stride);
379 
380 extern void GLAPIENTRY
381 _mesa_VertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingIndex, GLuint buffer,
382                                      GLintptr offset, GLsizei stride);
383 
384 void GLAPIENTRY
385 _mesa_BindVertexBuffers_no_error(GLuint first, GLsizei count,
386                                  const GLuint *buffers, const GLintptr *offsets,
387                                  const GLsizei *strides);
388 
389 extern void GLAPIENTRY
390 _mesa_BindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers,
391                         const GLintptr *offsets, const GLsizei *strides);
392 
393 void
394 _mesa_InternalBindVertexBuffers(struct gl_context *ctx,
395                                 const struct glthread_attrib_binding *buffers,
396                                 GLbitfield buffer_mask,
397                                 GLboolean restore_pointers);
398 
399 void GLAPIENTRY
400 _mesa_VertexArrayVertexBuffers_no_error(GLuint vaobj, GLuint first,
401                                         GLsizei count, const GLuint *buffers,
402                                         const GLintptr *offsets,
403                                         const GLsizei *strides);
404 
405 extern void GLAPIENTRY
406 _mesa_VertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count,
407                                const GLuint *buffers,
408                                const GLintptr *offsets, const GLsizei *strides);
409 
410 extern void GLAPIENTRY
411 _mesa_VertexAttribFormat(GLuint attribIndex, GLint size, GLenum type,
412                          GLboolean normalized, GLuint relativeOffset);
413 
414 extern void GLAPIENTRY
415 _mesa_VertexArrayAttribFormat(GLuint vaobj, GLuint attribIndex, GLint size,
416                               GLenum type, GLboolean normalized,
417                               GLuint relativeOffset);
418 
419 extern void GLAPIENTRY
420 _mesa_VertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribIndex, GLint size,
421                                        GLenum type, GLboolean normalized,
422                                        GLuint relativeOffset);
423 
424 extern void GLAPIENTRY
425 _mesa_VertexAttribIFormat(GLuint attribIndex, GLint size, GLenum type,
426                           GLuint relativeOffset);
427 
428 extern void GLAPIENTRY
429 _mesa_VertexArrayAttribIFormat(GLuint vaobj, GLuint attribIndex,
430                                GLint size, GLenum type,
431                                GLuint relativeOffset);
432 
433 extern void GLAPIENTRY
434 _mesa_VertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribIndex,
435                                         GLint size, GLenum type,
436                                         GLuint relativeOffset);
437 
438 extern void GLAPIENTRY
439 _mesa_VertexAttribLFormat(GLuint attribIndex, GLint size, GLenum type,
440                           GLuint relativeOffset);
441 
442 extern void GLAPIENTRY
443 _mesa_VertexArrayAttribLFormat(GLuint vaobj, GLuint attribIndex,
444                                GLint size, GLenum type,
445                                GLuint relativeOffset);
446 
447 extern void GLAPIENTRY
448 _mesa_VertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribIndex,
449                                         GLint size, GLenum type,
450                                         GLuint relativeOffset);
451 
452 void GLAPIENTRY
453 _mesa_VertexAttribBinding_no_error(GLuint attribIndex, GLuint bindingIndex);
454 
455 extern void GLAPIENTRY
456 _mesa_VertexAttribBinding(GLuint attribIndex, GLuint bindingIndex);
457 
458 void GLAPIENTRY
459 _mesa_VertexArrayAttribBinding_no_error(GLuint vaobj, GLuint attribIndex,
460                                         GLuint bindingIndex);
461 
462 extern void GLAPIENTRY
463 _mesa_VertexArrayAttribBinding(GLuint vaobj, GLuint attribIndex,
464                                GLuint bindingIndex);
465 
466 extern void GLAPIENTRY
467 _mesa_VertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribIndex,
468                                         GLuint bindingIndex);
469 
470 void GLAPIENTRY
471 _mesa_VertexBindingDivisor_no_error(GLuint bindingIndex, GLuint divisor);
472 
473 extern void GLAPIENTRY
474 _mesa_VertexBindingDivisor(GLuint bindingIndex, GLuint divisor);
475 
476 void GLAPIENTRY
477 _mesa_VertexArrayBindingDivisor_no_error(GLuint vaobj, GLuint bindingIndex,
478                                          GLuint divisor);
479 
480 extern void GLAPIENTRY
481 _mesa_VertexArrayBindingDivisor(GLuint vaobj, GLuint bindingIndex,
482                                 GLuint divisor);
483 
484 extern void GLAPIENTRY
485 _mesa_VertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingIndex,
486                                          GLuint divisor);
487 
488 
489 extern void
490 _mesa_copy_vertex_attrib_array(struct gl_context *ctx,
491                                struct gl_array_attributes *dst,
492                                const struct gl_array_attributes *src);
493 
494 extern void
495 _mesa_copy_vertex_buffer_binding(struct gl_context *ctx,
496                                  struct gl_vertex_buffer_binding *dst,
497                                  const struct gl_vertex_buffer_binding *src);
498 
499 extern void
500 _mesa_print_arrays(struct gl_context *ctx);
501 
502 extern void
503 _mesa_init_varray(struct gl_context *ctx);
504 
505 extern void
506 _mesa_free_varray_data(struct gl_context *ctx);
507 
508 extern void GLAPIENTRY
509 _mesa_VertexArrayVertexOffsetEXT(GLuint vaobj, GLuint buffer, GLint size,
510                                  GLenum type, GLsizei stride, GLintptr offset);
511 
512 extern void GLAPIENTRY
513 _mesa_VertexArrayColorOffsetEXT(GLuint vaobj, GLuint buffer, GLint size,
514                                 GLenum type, GLsizei stride, GLintptr offset);
515 
516 extern void GLAPIENTRY
517 _mesa_VertexArrayEdgeFlagOffsetEXT(GLuint vaobj, GLuint buffer, GLsizei stride,
518                                    GLintptr offset);
519 
520 extern void GLAPIENTRY
521 _mesa_VertexArrayIndexOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type,
522                                 GLsizei stride, GLintptr offset);
523 
524 extern void GLAPIENTRY
525 _mesa_VertexArrayNormalOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type,
526                                  GLsizei stride, GLintptr offset);
527 
528 extern void GLAPIENTRY
529 _mesa_VertexArrayTexCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLint size,
530                                    GLenum type, GLsizei stride, GLintptr offset);
531 
532 extern void GLAPIENTRY
533 _mesa_VertexArrayMultiTexCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLenum texunit,
534                                         GLint size, GLenum type, GLsizei stride,
535                                         GLintptr offset);
536 
537 extern void GLAPIENTRY
538 _mesa_VertexArrayFogCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type,
539                                    GLsizei stride, GLintptr offset);
540 
541 extern void GLAPIENTRY
542 _mesa_VertexArraySecondaryColorOffsetEXT(GLuint vaobj, GLuint buffer, GLint size,
543                                          GLenum type, GLsizei stride, GLintptr offset);
544 
545 extern void GLAPIENTRY
546 _mesa_VertexArrayVertexAttribOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size,
547                                        GLenum type, GLboolean normalized,
548                                        GLsizei stride, GLintptr offset);
549 
550 extern void GLAPIENTRY
551 _mesa_VertexArrayVertexAttribIOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size,
552                                         GLenum type, GLsizei stride, GLintptr offset);
553 
554 extern void GLAPIENTRY
555 _mesa_VertexArrayVertexAttribLOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size,
556                                         GLenum type, GLsizei stride, GLintptr offset);
557 
558 extern void GLAPIENTRY
559 _mesa_GetVertexArrayIntegervEXT(GLuint vaobj, GLenum pname, GLint *param);
560 
561 extern void GLAPIENTRY
562 _mesa_GetVertexArrayPointervEXT(GLuint vaobj, GLenum pname, GLvoid** param);
563 
564 extern void GLAPIENTRY
565 _mesa_GetVertexArrayIntegeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, GLint *param);
566 
567 extern void GLAPIENTRY
568 _mesa_GetVertexArrayPointeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, GLvoid** param);
569 
570 #endif
571