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