jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Mesa 3-D graphics library |
Jouk Jansen | 5e3bc0c | 2000-11-22 07:32:16 +0000 | [diff] [blame] | 3 | * |
Brian Paul | 39d7524 | 2009-05-14 16:25:32 -0600 | [diff] [blame] | 4 | * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. |
| 5 | * Copyright (C) 2009 VMware, Inc. All Rights Reserved. |
Jouk Jansen | 5e3bc0c | 2000-11-22 07:32:16 +0000 | [diff] [blame] | 6 | * |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 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: |
Jouk Jansen | 5e3bc0c | 2000-11-22 07:32:16 +0000 | [diff] [blame] | 13 | * |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 14 | * The above copyright notice and this permission notice shall be included |
| 15 | * in all copies or substantial portions of the Software. |
Jouk Jansen | 5e3bc0c | 2000-11-22 07:32:16 +0000 | [diff] [blame] | 16 | * |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 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 |
Kenneth Graunke | 3d8d5b2 | 2013-04-21 13:46:48 -0700 | [diff] [blame] | 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. |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 24 | */ |
| 25 | |
| 26 | |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 27 | #ifndef VARRAY_H |
| 28 | #define VARRAY_H |
| 29 | |
| 30 | |
Vinson Lee | dbd3f72 | 2010-12-07 00:33:36 -0800 | [diff] [blame] | 31 | #include "glheader.h" |
Fredrik Höglund | 59b01ca | 2013-04-09 20:54:25 +0200 | [diff] [blame] | 32 | #include "bufferobj.h" |
Vinson Lee | dbd3f72 | 2010-12-07 00:33:36 -0800 | [diff] [blame] | 33 | |
Brian Paul | c538846 | 2016-10-26 09:33:49 -0700 | [diff] [blame] | 34 | struct gl_vertex_array; |
Vinson Lee | dbd3f72 | 2010-12-07 00:33:36 -0800 | [diff] [blame] | 35 | struct gl_context; |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 36 | |
Fredrik Höglund | 59b01ca | 2013-04-09 20:54:25 +0200 | [diff] [blame] | 37 | /** |
| 38 | * Returns a pointer to the vertex attribute data in a client array, |
| 39 | * or the offset into the vertex buffer for an array that resides in |
| 40 | * a vertex buffer. |
| 41 | */ |
| 42 | static inline const GLubyte * |
Brian Paul | 15fb88e | 2016-10-06 17:30:20 -0600 | [diff] [blame] | 43 | _mesa_vertex_attrib_address(const struct gl_array_attributes *array, |
Brian Paul | e032abc | 2013-11-11 10:56:09 -0700 | [diff] [blame] | 44 | const struct gl_vertex_buffer_binding *binding) |
Fredrik Höglund | 59b01ca | 2013-04-09 20:54:25 +0200 | [diff] [blame] | 45 | { |
Brian Paul | 5f22f32 | 2013-11-11 10:57:23 -0700 | [diff] [blame] | 46 | if (_mesa_is_bufferobj(binding->BufferObj)) |
| 47 | return (const GLubyte *) (binding->Offset + array->RelativeOffset); |
| 48 | else |
| 49 | return array->Ptr; |
Fredrik Höglund | 59b01ca | 2013-04-09 20:54:25 +0200 | [diff] [blame] | 50 | } |
| 51 | |
| 52 | /** |
Brian Paul | c538846 | 2016-10-26 09:33:49 -0700 | [diff] [blame] | 53 | * Sets the fields in a gl_vertex_array to values derived from a |
Fredrik Höglund | 59b01ca | 2013-04-09 20:54:25 +0200 | [diff] [blame] | 54 | * gl_vertex_attrib_array and a gl_vertex_buffer_binding. |
| 55 | */ |
| 56 | static inline void |
| 57 | _mesa_update_client_array(struct gl_context *ctx, |
Brian Paul | c538846 | 2016-10-26 09:33:49 -0700 | [diff] [blame] | 58 | struct gl_vertex_array *dst, |
Brian Paul | 15fb88e | 2016-10-06 17:30:20 -0600 | [diff] [blame] | 59 | const struct gl_array_attributes *src, |
Brian Paul | e032abc | 2013-11-11 10:56:09 -0700 | [diff] [blame] | 60 | const struct gl_vertex_buffer_binding *binding) |
Fredrik Höglund | 59b01ca | 2013-04-09 20:54:25 +0200 | [diff] [blame] | 61 | { |
| 62 | dst->Size = src->Size; |
| 63 | dst->Type = src->Type; |
| 64 | dst->Format = src->Format; |
Fredrik Höglund | 59b01ca | 2013-04-09 20:54:25 +0200 | [diff] [blame] | 65 | dst->StrideB = binding->Stride; |
| 66 | dst->Ptr = _mesa_vertex_attrib_address(src, binding); |
Fredrik Höglund | 59b01ca | 2013-04-09 20:54:25 +0200 | [diff] [blame] | 67 | dst->Normalized = src->Normalized; |
| 68 | dst->Integer = src->Integer; |
Dave Airlie | c4254ee | 2015-02-20 11:41:01 +1000 | [diff] [blame] | 69 | dst->Doubles = src->Doubles; |
Fredrik Höglund | 59b01ca | 2013-04-09 20:54:25 +0200 | [diff] [blame] | 70 | dst->InstanceDivisor = binding->InstanceDivisor; |
| 71 | dst->_ElementSize = src->_ElementSize; |
| 72 | _mesa_reference_buffer_object(ctx, &dst->BufferObj, binding->BufferObj); |
| 73 | } |
| 74 | |
Anuj Phogat | 49c7105 | 2014-03-28 17:44:59 -0700 | [diff] [blame] | 75 | static inline bool |
| 76 | _mesa_attr_zero_aliases_vertex(struct gl_context *ctx) |
| 77 | { |
| 78 | const bool is_forward_compatible_context = |
| 79 | ctx->Const.ContextFlags & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT; |
| 80 | |
| 81 | /* In OpenGL 3.1 attribute 0 becomes non-magic, just like in OpenGL ES |
| 82 | * 2.0. Note that we cannot just check for API_OPENGL_COMPAT here because |
| 83 | * that will erroneously allow this usage in a 3.0 forward-compatible |
| 84 | * context too. |
| 85 | */ |
| 86 | return (ctx->API == API_OPENGLES |
| 87 | || (ctx->API == API_OPENGL_COMPAT |
| 88 | && !is_forward_compatible_context)); |
| 89 | } |
| 90 | |
Ian Romanick | 8fae494 | 2015-11-02 12:40:32 -0800 | [diff] [blame] | 91 | extern void |
Ian Romanick | a336fcd | 2015-11-03 16:09:22 -0800 | [diff] [blame] | 92 | _mesa_update_array_format(struct gl_context *ctx, |
| 93 | struct gl_vertex_array_object *vao, |
| 94 | GLuint attrib, GLint size, GLenum type, |
| 95 | GLenum format, GLboolean normalized, |
| 96 | GLboolean integer, GLboolean doubles, |
| 97 | GLuint relativeOffset, bool flush_vertices); |
| 98 | |
| 99 | extern void |
Ian Romanick | 4a644f1 | 2015-11-03 16:16:00 -0800 | [diff] [blame] | 100 | _mesa_enable_vertex_array_attrib(struct gl_context *ctx, |
| 101 | struct gl_vertex_array_object *vao, |
| 102 | unsigned attrib); |
| 103 | |
| 104 | extern void |
Ian Romanick | 8fae494 | 2015-11-02 12:40:32 -0800 | [diff] [blame] | 105 | _mesa_bind_vertex_buffer(struct gl_context *ctx, |
| 106 | struct gl_vertex_array_object *vao, |
| 107 | GLuint index, |
| 108 | struct gl_buffer_object *vbo, |
| 109 | GLintptr offset, GLsizei stride); |
| 110 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 111 | extern void GLAPIENTRY |
Brian Paul | fbd8f21 | 1999-11-11 01:22:25 +0000 | [diff] [blame] | 112 | _mesa_VertexPointer(GLint size, GLenum type, GLsizei stride, |
| 113 | const GLvoid *ptr); |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 114 | |
| 115 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 116 | extern void GLAPIENTRY |
Brian Paul | fbd8f21 | 1999-11-11 01:22:25 +0000 | [diff] [blame] | 117 | _mesa_NormalPointer(GLenum type, GLsizei stride, const GLvoid *ptr); |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 118 | |
| 119 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 120 | extern void GLAPIENTRY |
Brian Paul | fbd8f21 | 1999-11-11 01:22:25 +0000 | [diff] [blame] | 121 | _mesa_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr); |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 122 | |
| 123 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 124 | extern void GLAPIENTRY |
Brian Paul | fbd8f21 | 1999-11-11 01:22:25 +0000 | [diff] [blame] | 125 | _mesa_IndexPointer(GLenum type, GLsizei stride, const GLvoid *ptr); |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 126 | |
| 127 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 128 | extern void GLAPIENTRY |
Brian Paul | fbd8f21 | 1999-11-11 01:22:25 +0000 | [diff] [blame] | 129 | _mesa_TexCoordPointer(GLint size, GLenum type, GLsizei stride, |
| 130 | const GLvoid *ptr); |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 131 | |
| 132 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 133 | extern void GLAPIENTRY |
Brian Paul | fbd8f21 | 1999-11-11 01:22:25 +0000 | [diff] [blame] | 134 | _mesa_EdgeFlagPointer(GLsizei stride, const GLvoid *ptr); |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 135 | |
| 136 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 137 | extern void GLAPIENTRY |
Brian Paul | 1f0e213 | 2000-06-12 15:30:51 +0000 | [diff] [blame] | 138 | _mesa_VertexPointerEXT(GLint size, GLenum type, GLsizei stride, |
| 139 | GLsizei count, const GLvoid *ptr); |
| 140 | |
| 141 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 142 | extern void GLAPIENTRY |
Brian Paul | 1f0e213 | 2000-06-12 15:30:51 +0000 | [diff] [blame] | 143 | _mesa_NormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, |
| 144 | const GLvoid *ptr); |
| 145 | |
| 146 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 147 | extern void GLAPIENTRY |
Brian Paul | 1f0e213 | 2000-06-12 15:30:51 +0000 | [diff] [blame] | 148 | _mesa_ColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, |
| 149 | const GLvoid *ptr); |
| 150 | |
| 151 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 152 | extern void GLAPIENTRY |
Brian Paul | 1f0e213 | 2000-06-12 15:30:51 +0000 | [diff] [blame] | 153 | _mesa_IndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, |
| 154 | const GLvoid *ptr); |
| 155 | |
| 156 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 157 | extern void GLAPIENTRY |
Brian Paul | 1f0e213 | 2000-06-12 15:30:51 +0000 | [diff] [blame] | 158 | _mesa_TexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, |
| 159 | GLsizei count, const GLvoid *ptr); |
| 160 | |
| 161 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 162 | extern void GLAPIENTRY |
Brian Paul | 1f0e213 | 2000-06-12 15:30:51 +0000 | [diff] [blame] | 163 | _mesa_EdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *ptr); |
| 164 | |
| 165 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 166 | extern void GLAPIENTRY |
Paul Berry | 1a1db17 | 2012-11-06 08:57:59 -0800 | [diff] [blame] | 167 | _mesa_FogCoordPointer(GLenum type, GLsizei stride, const GLvoid *ptr); |
Brian Paul | 1f0e213 | 2000-06-12 15:30:51 +0000 | [diff] [blame] | 168 | |
Brian Paul | 2edd180 | 2002-01-11 17:25:35 +0000 | [diff] [blame] | 169 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 170 | extern void GLAPIENTRY |
Paul Berry | 1a1db17 | 2012-11-06 08:57:59 -0800 | [diff] [blame] | 171 | _mesa_SecondaryColorPointer(GLint size, GLenum type, |
Keith Whitwell | fe5d67d | 2000-10-27 16:44:40 +0000 | [diff] [blame] | 172 | GLsizei stride, const GLvoid *ptr); |
Brian Paul | 1f0e213 | 2000-06-12 15:30:51 +0000 | [diff] [blame] | 173 | |
| 174 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 175 | extern void GLAPIENTRY |
Paul Berry | 1a1db17 | 2012-11-06 08:57:59 -0800 | [diff] [blame] | 176 | _mesa_PointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *ptr); |
Brian Paul | d378f7b | 2008-06-25 08:45:14 -0600 | [diff] [blame] | 177 | |
| 178 | |
| 179 | extern void GLAPIENTRY |
Paul Berry | 1a1db17 | 2012-11-06 08:57:59 -0800 | [diff] [blame] | 180 | _mesa_VertexAttribPointer(GLuint index, GLint size, GLenum type, |
Brian Paul | 92f9785 | 2003-05-01 22:44:02 +0000 | [diff] [blame] | 181 | GLboolean normalized, GLsizei stride, |
| 182 | const GLvoid *pointer); |
| 183 | |
Brian Paul | e00d07c | 2010-05-25 21:12:24 -0600 | [diff] [blame] | 184 | void GLAPIENTRY |
| 185 | _mesa_VertexAttribIPointer(GLuint index, GLint size, GLenum type, |
Brian Paul | e00d07c | 2010-05-25 21:12:24 -0600 | [diff] [blame] | 186 | GLsizei stride, const GLvoid *ptr); |
| 187 | |
Dave Airlie | 5a7f049 | 2015-02-20 11:26:33 +1000 | [diff] [blame] | 188 | extern void GLAPIENTRY |
| 189 | _mesa_VertexAttribLPointer(GLuint index, GLint size, GLenum type, |
| 190 | GLsizei stride, const GLvoid *pointer); |
Brian Paul | 92f9785 | 2003-05-01 22:44:02 +0000 | [diff] [blame] | 191 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 192 | extern void GLAPIENTRY |
Paul Berry | 1a1db17 | 2012-11-06 08:57:59 -0800 | [diff] [blame] | 193 | _mesa_EnableVertexAttribArray(GLuint index); |
Brian Paul | d3f598a | 2010-05-25 21:42:13 -0600 | [diff] [blame] | 194 | |
| 195 | |
| 196 | extern void GLAPIENTRY |
Fredrik Höglund | c99efbd | 2015-03-02 18:27:58 +0100 | [diff] [blame] | 197 | _mesa_EnableVertexArrayAttrib(GLuint vaobj, GLuint index); |
| 198 | |
| 199 | |
| 200 | extern void GLAPIENTRY |
Paul Berry | 1a1db17 | 2012-11-06 08:57:59 -0800 | [diff] [blame] | 201 | _mesa_DisableVertexAttribArray(GLuint index); |
Brian Paul | d3f598a | 2010-05-25 21:42:13 -0600 | [diff] [blame] | 202 | |
| 203 | |
| 204 | extern void GLAPIENTRY |
Fredrik Höglund | 96b6463 | 2015-03-02 18:27:18 +0100 | [diff] [blame] | 205 | _mesa_DisableVertexArrayAttrib(GLuint vaobj, GLuint index); |
| 206 | |
| 207 | |
| 208 | extern void GLAPIENTRY |
Paul Berry | 1a1db17 | 2012-11-06 08:57:59 -0800 | [diff] [blame] | 209 | _mesa_GetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params); |
Brian Paul | d3f598a | 2010-05-25 21:42:13 -0600 | [diff] [blame] | 210 | |
Brian Paul | d3f598a | 2010-05-25 21:42:13 -0600 | [diff] [blame] | 211 | extern void GLAPIENTRY |
Paul Berry | 1a1db17 | 2012-11-06 08:57:59 -0800 | [diff] [blame] | 212 | _mesa_GetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params); |
Brian Paul | d3f598a | 2010-05-25 21:42:13 -0600 | [diff] [blame] | 213 | |
Dave Airlie | 5a7f049 | 2015-02-20 11:26:33 +1000 | [diff] [blame] | 214 | extern void GLAPIENTRY |
| 215 | _mesa_GetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params); |
Brian Paul | d3f598a | 2010-05-25 21:42:13 -0600 | [diff] [blame] | 216 | |
| 217 | extern void GLAPIENTRY |
Paul Berry | 1a1db17 | 2012-11-06 08:57:59 -0800 | [diff] [blame] | 218 | _mesa_GetVertexAttribiv(GLuint index, GLenum pname, GLint *params); |
Brian Paul | d3f598a | 2010-05-25 21:42:13 -0600 | [diff] [blame] | 219 | |
| 220 | |
| 221 | extern void GLAPIENTRY |
| 222 | _mesa_GetVertexAttribIiv(GLuint index, GLenum pname, GLint *params); |
| 223 | |
| 224 | |
| 225 | extern void GLAPIENTRY |
| 226 | _mesa_GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params); |
| 227 | |
| 228 | |
| 229 | extern void GLAPIENTRY |
Paul Berry | 1a1db17 | 2012-11-06 08:57:59 -0800 | [diff] [blame] | 230 | _mesa_GetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid **pointer); |
Brian Paul | d3f598a | 2010-05-25 21:42:13 -0600 | [diff] [blame] | 231 | |
| 232 | |
Fredrik Höglund | 97b268f | 2015-03-02 19:07:52 +0100 | [diff] [blame] | 233 | void GLAPIENTRY |
| 234 | _mesa_GetVertexArrayIndexediv(GLuint vaobj, GLuint index, |
| 235 | GLenum pname, GLint *param); |
| 236 | |
| 237 | |
| 238 | void GLAPIENTRY |
| 239 | _mesa_GetVertexArrayIndexed64iv(GLuint vaobj, GLuint index, |
| 240 | GLenum pname, GLint64 *param); |
| 241 | |
| 242 | |
Brian Paul | d3f598a | 2010-05-25 21:42:13 -0600 | [diff] [blame] | 243 | extern void GLAPIENTRY |
Brian Paul | 2edd180 | 2002-01-11 17:25:35 +0000 | [diff] [blame] | 244 | _mesa_InterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer); |
| 245 | |
Brian Paul | fbd8f21 | 1999-11-11 01:22:25 +0000 | [diff] [blame] | 246 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 247 | extern void GLAPIENTRY |
Paul Berry | 1a1db17 | 2012-11-06 08:57:59 -0800 | [diff] [blame] | 248 | _mesa_MultiDrawArrays( GLenum mode, const GLint *first, |
Brian Paul | 7993832 | 2010-09-14 09:37:35 -0600 | [diff] [blame] | 249 | const GLsizei *count, GLsizei primcount ); |
Brian Paul | 2525bc7 | 2002-06-30 15:47:00 +0000 | [diff] [blame] | 250 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 251 | extern void GLAPIENTRY |
Brian Paul | 2525bc7 | 2002-06-30 15:47:00 +0000 | [diff] [blame] | 252 | _mesa_MultiDrawElementsEXT( GLenum mode, const GLsizei *count, GLenum type, |
| 253 | const GLvoid **indices, GLsizei primcount ); |
| 254 | |
Eric Anholt | 92d7ed8 | 2009-08-27 10:09:24 -0700 | [diff] [blame] | 255 | extern void GLAPIENTRY |
| 256 | _mesa_MultiDrawElementsBaseVertex( GLenum mode, |
| 257 | const GLsizei *count, GLenum type, |
| 258 | const GLvoid **indices, GLsizei primcount, |
| 259 | const GLint *basevertex); |
Ian Romanick | 3baefe6 | 2003-08-22 23:28:03 +0000 | [diff] [blame] | 260 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 261 | extern void GLAPIENTRY |
Ian Romanick | 3baefe6 | 2003-08-22 23:28:03 +0000 | [diff] [blame] | 262 | _mesa_MultiModeDrawArraysIBM( const GLenum * mode, const GLint * first, |
| 263 | const GLsizei * count, |
| 264 | GLsizei primcount, GLint modestride ); |
| 265 | |
| 266 | |
Kendall Bennett | c40d1dd | 2003-10-21 22:22:17 +0000 | [diff] [blame] | 267 | extern void GLAPIENTRY |
Ian Romanick | 3baefe6 | 2003-08-22 23:28:03 +0000 | [diff] [blame] | 268 | _mesa_MultiModeDrawElementsIBM( const GLenum * mode, const GLsizei * count, |
| 269 | GLenum type, const GLvoid * const * indices, |
| 270 | GLsizei primcount, GLint modestride ); |
| 271 | |
Eric Anholt | 5857e98 | 2008-02-02 02:54:13 -0800 | [diff] [blame] | 272 | extern void GLAPIENTRY |
| 273 | _mesa_LockArraysEXT(GLint first, GLsizei count); |
| 274 | |
| 275 | extern void GLAPIENTRY |
| 276 | _mesa_UnlockArraysEXT( void ); |
Ian Romanick | 3baefe6 | 2003-08-22 23:28:03 +0000 | [diff] [blame] | 277 | |
Brian Paul | feb722f | 2008-06-05 12:01:00 -0600 | [diff] [blame] | 278 | |
| 279 | extern void GLAPIENTRY |
| 280 | _mesa_DrawArrays(GLenum mode, GLint first, GLsizei count); |
| 281 | |
| 282 | extern void GLAPIENTRY |
Kenneth Graunke | ed6a4d6 | 2014-08-13 16:02:17 -0700 | [diff] [blame] | 283 | _mesa_DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, |
| 284 | GLsizei primcount); |
| 285 | |
| 286 | extern void GLAPIENTRY |
Brian Paul | feb722f | 2008-06-05 12:01:00 -0600 | [diff] [blame] | 287 | _mesa_DrawElements(GLenum mode, GLsizei count, GLenum type, |
| 288 | const GLvoid *indices); |
| 289 | |
| 290 | extern void GLAPIENTRY |
| 291 | _mesa_DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, |
| 292 | GLenum type, const GLvoid *indices); |
| 293 | |
Eric Anholt | 92d7ed8 | 2009-08-27 10:09:24 -0700 | [diff] [blame] | 294 | extern void GLAPIENTRY |
| 295 | _mesa_DrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, |
| 296 | const GLvoid *indices, GLint basevertex); |
| 297 | |
| 298 | extern void GLAPIENTRY |
| 299 | _mesa_DrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, |
| 300 | GLsizei count, GLenum type, |
| 301 | const GLvoid *indices, |
| 302 | GLint basevertex); |
| 303 | |
Marek Olšák | 14bb957 | 2011-12-09 17:00:23 +0100 | [diff] [blame] | 304 | extern void GLAPIENTRY |
| 305 | _mesa_DrawTransformFeedback(GLenum mode, GLuint name); |
| 306 | |
Brian Paul | a40e6f2 | 2010-04-20 21:02:09 -0600 | [diff] [blame] | 307 | extern void GLAPIENTRY |
| 308 | _mesa_PrimitiveRestartIndex(GLuint index); |
| 309 | |
Brian Paul | feb722f | 2008-06-05 12:01:00 -0600 | [diff] [blame] | 310 | |
Brian Paul | 1d1eb95 | 2011-01-15 10:32:34 -0700 | [diff] [blame] | 311 | extern void GLAPIENTRY |
| 312 | _mesa_VertexAttribDivisor(GLuint index, GLuint divisor); |
| 313 | |
Kenneth Graunke | 959d076 | 2013-05-29 08:07:01 -0700 | [diff] [blame] | 314 | extern unsigned |
| 315 | _mesa_primitive_restart_index(const struct gl_context *ctx, GLenum ib_type); |
Brian Paul | 1d1eb95 | 2011-01-15 10:32:34 -0700 | [diff] [blame] | 316 | |
Fredrik Höglund | bb2d02c | 2013-04-09 20:44:58 +0200 | [diff] [blame] | 317 | extern void GLAPIENTRY |
| 318 | _mesa_BindVertexBuffer(GLuint bindingIndex, GLuint buffer, GLintptr offset, |
| 319 | GLsizei stride); |
| 320 | |
| 321 | extern void GLAPIENTRY |
Fredrik Höglund | cc9b68e | 2015-03-02 18:35:10 +0100 | [diff] [blame] | 322 | _mesa_VertexArrayVertexBuffer(GLuint vaobj, GLuint bindingIndex, GLuint buffer, |
| 323 | GLintptr offset, GLsizei stride); |
| 324 | |
| 325 | extern void GLAPIENTRY |
Fredrik Höglund | 6655e70 | 2013-11-13 19:02:10 +0100 | [diff] [blame] | 326 | _mesa_BindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, |
| 327 | const GLintptr *offsets, const GLsizei *strides); |
| 328 | |
| 329 | extern void GLAPIENTRY |
Fredrik Höglund | 3089268 | 2015-03-02 18:37:27 +0100 | [diff] [blame] | 330 | _mesa_VertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, |
| 331 | const GLuint *buffers, |
| 332 | const GLintptr *offsets, const GLsizei *strides); |
| 333 | |
| 334 | extern void GLAPIENTRY |
Fredrik Höglund | bb2d02c | 2013-04-09 20:44:58 +0200 | [diff] [blame] | 335 | _mesa_VertexAttribFormat(GLuint attribIndex, GLint size, GLenum type, |
| 336 | GLboolean normalized, GLuint relativeOffset); |
| 337 | |
| 338 | extern void GLAPIENTRY |
Fredrik Höglund | f0030b0 | 2015-03-02 18:44:00 +0100 | [diff] [blame] | 339 | _mesa_VertexArrayAttribFormat(GLuint vaobj, GLuint attribIndex, GLint size, |
| 340 | GLenum type, GLboolean normalized, |
| 341 | GLuint relativeOffset); |
| 342 | |
| 343 | extern void GLAPIENTRY |
Fredrik Höglund | bb2d02c | 2013-04-09 20:44:58 +0200 | [diff] [blame] | 344 | _mesa_VertexAttribIFormat(GLuint attribIndex, GLint size, GLenum type, |
| 345 | GLuint relativeOffset); |
| 346 | |
| 347 | extern void GLAPIENTRY |
Fredrik Höglund | f0030b0 | 2015-03-02 18:44:00 +0100 | [diff] [blame] | 348 | _mesa_VertexArrayAttribIFormat(GLuint vaobj, GLuint attribIndex, |
| 349 | GLint size, GLenum type, |
| 350 | GLuint relativeOffset); |
| 351 | |
| 352 | extern void GLAPIENTRY |
Fredrik Höglund | bb2d02c | 2013-04-09 20:44:58 +0200 | [diff] [blame] | 353 | _mesa_VertexAttribLFormat(GLuint attribIndex, GLint size, GLenum type, |
| 354 | GLuint relativeOffset); |
| 355 | |
| 356 | extern void GLAPIENTRY |
Fredrik Höglund | f0030b0 | 2015-03-02 18:44:00 +0100 | [diff] [blame] | 357 | _mesa_VertexArrayAttribLFormat(GLuint vaobj, GLuint attribIndex, |
| 358 | GLint size, GLenum type, |
| 359 | GLuint relativeOffset); |
| 360 | |
| 361 | extern void GLAPIENTRY |
Fredrik Höglund | bb2d02c | 2013-04-09 20:44:58 +0200 | [diff] [blame] | 362 | _mesa_VertexAttribBinding(GLuint attribIndex, GLuint bindingIndex); |
| 363 | |
| 364 | extern void GLAPIENTRY |
Fredrik Höglund | dc2eaaf | 2015-03-02 18:49:06 +0100 | [diff] [blame] | 365 | _mesa_VertexArrayAttribBinding(GLuint vaobj, GLuint attribIndex, |
| 366 | GLuint bindingIndex); |
| 367 | |
| 368 | extern void GLAPIENTRY |
Fredrik Höglund | bb2d02c | 2013-04-09 20:44:58 +0200 | [diff] [blame] | 369 | _mesa_VertexBindingDivisor(GLuint bindingIndex, GLuint divisor); |
| 370 | |
Fredrik Höglund | 0a895c3 | 2015-03-02 18:52:36 +0100 | [diff] [blame] | 371 | extern void GLAPIENTRY |
| 372 | _mesa_VertexArrayBindingDivisor(GLuint vaobj, GLuint bindingIndex, GLuint divisor); |
Fredrik Höglund | bb2d02c | 2013-04-09 20:44:58 +0200 | [diff] [blame] | 373 | |
Brian Paul | 39d7524 | 2009-05-14 16:25:32 -0600 | [diff] [blame] | 374 | extern void |
Kristian Høgsberg | f9995b3 | 2010-10-12 12:26:10 -0400 | [diff] [blame] | 375 | _mesa_copy_client_array(struct gl_context *ctx, |
Brian Paul | c538846 | 2016-10-26 09:33:49 -0700 | [diff] [blame] | 376 | struct gl_vertex_array *dst, |
| 377 | struct gl_vertex_array *src); |
Brian Paul | b288540 | 2009-08-06 13:53:06 -0600 | [diff] [blame] | 378 | |
Fredrik Höglund | 59b01ca | 2013-04-09 20:54:25 +0200 | [diff] [blame] | 379 | extern void |
| 380 | _mesa_copy_vertex_attrib_array(struct gl_context *ctx, |
Brian Paul | 15fb88e | 2016-10-06 17:30:20 -0600 | [diff] [blame] | 381 | struct gl_array_attributes *dst, |
| 382 | const struct gl_array_attributes *src); |
Fredrik Höglund | 59b01ca | 2013-04-09 20:54:25 +0200 | [diff] [blame] | 383 | |
| 384 | extern void |
| 385 | _mesa_copy_vertex_buffer_binding(struct gl_context *ctx, |
| 386 | struct gl_vertex_buffer_binding *dst, |
| 387 | const struct gl_vertex_buffer_binding *src); |
Brian Paul | b288540 | 2009-08-06 13:53:06 -0600 | [diff] [blame] | 388 | |
| 389 | extern void |
Kristian Høgsberg | f9995b3 | 2010-10-12 12:26:10 -0400 | [diff] [blame] | 390 | _mesa_print_arrays(struct gl_context *ctx); |
Brian Paul | feb722f | 2008-06-05 12:01:00 -0600 | [diff] [blame] | 391 | |
Keith Whitwell | 6dc8557 | 2003-07-17 13:43:59 +0000 | [diff] [blame] | 392 | extern void |
Kristian Høgsberg | f9995b3 | 2010-10-12 12:26:10 -0400 | [diff] [blame] | 393 | _mesa_init_varray( struct gl_context * ctx ); |
Keith Whitwell | 6dc8557 | 2003-07-17 13:43:59 +0000 | [diff] [blame] | 394 | |
Brian Paul | 12cf98f | 2009-06-19 17:58:47 -0600 | [diff] [blame] | 395 | extern void |
Kristian Høgsberg | f9995b3 | 2010-10-12 12:26:10 -0400 | [diff] [blame] | 396 | _mesa_free_varray_data(struct gl_context *ctx); |
Brian Paul | 12cf98f | 2009-06-19 17:58:47 -0600 | [diff] [blame] | 397 | |
jtg | afb833d | 1999-08-19 00:55:39 +0000 | [diff] [blame] | 398 | #endif |