blob: 8c30d16ea3a5df9ffa0f3c8c9abbba1cd52093a7 [file] [log] [blame]
jtgafb833d1999-08-19 00:55:39 +00001/*
2 * Mesa 3-D graphics library
Jouk Jansen5e3bc0c2000-11-22 07:32:16 +00003 *
Brian Paul39d75242009-05-14 16:25:32 -06004 * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
5 * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
Jouk Jansen5e3bc0c2000-11-22 07:32:16 +00006 *
jtgafb833d1999-08-19 00:55:39 +00007 * 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 Jansen5e3bc0c2000-11-22 07:32:16 +000013 *
jtgafb833d1999-08-19 00:55:39 +000014 * The above copyright notice and this permission notice shall be included
15 * in all copies or substantial portions of the Software.
Jouk Jansen5e3bc0c2000-11-22 07:32:16 +000016 *
jtgafb833d1999-08-19 00:55:39 +000017 * 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 Graunke3d8d5b22013-04-21 13:46:48 -070020 * 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.
jtgafb833d1999-08-19 00:55:39 +000024 */
25
26
jtgafb833d1999-08-19 00:55:39 +000027#ifndef VARRAY_H
28#define VARRAY_H
29
30
Vinson Leedbd3f722010-12-07 00:33:36 -080031#include "glheader.h"
Fredrik Höglund59b01ca2013-04-09 20:54:25 +020032#include "bufferobj.h"
Vinson Leedbd3f722010-12-07 00:33:36 -080033
Brian Paulc5388462016-10-26 09:33:49 -070034struct gl_vertex_array;
Vinson Leedbd3f722010-12-07 00:33:36 -080035struct gl_context;
jtgafb833d1999-08-19 00:55:39 +000036
Fredrik Höglund59b01ca2013-04-09 20:54:25 +020037/**
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 */
42static inline const GLubyte *
Brian Paul15fb88e2016-10-06 17:30:20 -060043_mesa_vertex_attrib_address(const struct gl_array_attributes *array,
Brian Paule032abc2013-11-11 10:56:09 -070044 const struct gl_vertex_buffer_binding *binding)
Fredrik Höglund59b01ca2013-04-09 20:54:25 +020045{
Brian Paul5f22f322013-11-11 10:57:23 -070046 if (_mesa_is_bufferobj(binding->BufferObj))
47 return (const GLubyte *) (binding->Offset + array->RelativeOffset);
48 else
49 return array->Ptr;
Fredrik Höglund59b01ca2013-04-09 20:54:25 +020050}
51
52/**
Brian Paulc5388462016-10-26 09:33:49 -070053 * Sets the fields in a gl_vertex_array to values derived from a
Fredrik Höglund59b01ca2013-04-09 20:54:25 +020054 * gl_vertex_attrib_array and a gl_vertex_buffer_binding.
55 */
56static inline void
57_mesa_update_client_array(struct gl_context *ctx,
Brian Paulc5388462016-10-26 09:33:49 -070058 struct gl_vertex_array *dst,
Brian Paul15fb88e2016-10-06 17:30:20 -060059 const struct gl_array_attributes *src,
Brian Paule032abc2013-11-11 10:56:09 -070060 const struct gl_vertex_buffer_binding *binding)
Fredrik Höglund59b01ca2013-04-09 20:54:25 +020061{
62 dst->Size = src->Size;
63 dst->Type = src->Type;
64 dst->Format = src->Format;
Fredrik Höglund59b01ca2013-04-09 20:54:25 +020065 dst->StrideB = binding->Stride;
66 dst->Ptr = _mesa_vertex_attrib_address(src, binding);
Fredrik Höglund59b01ca2013-04-09 20:54:25 +020067 dst->Normalized = src->Normalized;
68 dst->Integer = src->Integer;
Dave Airliec4254ee2015-02-20 11:41:01 +100069 dst->Doubles = src->Doubles;
Fredrik Höglund59b01ca2013-04-09 20:54:25 +020070 dst->InstanceDivisor = binding->InstanceDivisor;
71 dst->_ElementSize = src->_ElementSize;
72 _mesa_reference_buffer_object(ctx, &dst->BufferObj, binding->BufferObj);
73}
74
Anuj Phogat49c71052014-03-28 17:44:59 -070075static 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 Romanick8fae4942015-11-02 12:40:32 -080091extern void
Ian Romanicka336fcd2015-11-03 16:09:22 -080092_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
99extern void
Ian Romanick4a644f12015-11-03 16:16:00 -0800100_mesa_enable_vertex_array_attrib(struct gl_context *ctx,
101 struct gl_vertex_array_object *vao,
102 unsigned attrib);
103
104extern void
Ian Romanick8fae4942015-11-02 12:40:32 -0800105_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 Bennettc40d1dd2003-10-21 22:22:17 +0000111extern void GLAPIENTRY
Brian Paulfbd8f211999-11-11 01:22:25 +0000112_mesa_VertexPointer(GLint size, GLenum type, GLsizei stride,
113 const GLvoid *ptr);
jtgafb833d1999-08-19 00:55:39 +0000114
115
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000116extern void GLAPIENTRY
Brian Paulfbd8f211999-11-11 01:22:25 +0000117_mesa_NormalPointer(GLenum type, GLsizei stride, const GLvoid *ptr);
jtgafb833d1999-08-19 00:55:39 +0000118
119
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000120extern void GLAPIENTRY
Brian Paulfbd8f211999-11-11 01:22:25 +0000121_mesa_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr);
jtgafb833d1999-08-19 00:55:39 +0000122
123
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000124extern void GLAPIENTRY
Brian Paulfbd8f211999-11-11 01:22:25 +0000125_mesa_IndexPointer(GLenum type, GLsizei stride, const GLvoid *ptr);
jtgafb833d1999-08-19 00:55:39 +0000126
127
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000128extern void GLAPIENTRY
Brian Paulfbd8f211999-11-11 01:22:25 +0000129_mesa_TexCoordPointer(GLint size, GLenum type, GLsizei stride,
130 const GLvoid *ptr);
jtgafb833d1999-08-19 00:55:39 +0000131
132
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000133extern void GLAPIENTRY
Brian Paulfbd8f211999-11-11 01:22:25 +0000134_mesa_EdgeFlagPointer(GLsizei stride, const GLvoid *ptr);
jtgafb833d1999-08-19 00:55:39 +0000135
136
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000137extern void GLAPIENTRY
Brian Paul1f0e2132000-06-12 15:30:51 +0000138_mesa_VertexPointerEXT(GLint size, GLenum type, GLsizei stride,
139 GLsizei count, const GLvoid *ptr);
140
141
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000142extern void GLAPIENTRY
Brian Paul1f0e2132000-06-12 15:30:51 +0000143_mesa_NormalPointerEXT(GLenum type, GLsizei stride, GLsizei count,
144 const GLvoid *ptr);
145
146
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000147extern void GLAPIENTRY
Brian Paul1f0e2132000-06-12 15:30:51 +0000148_mesa_ColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count,
149 const GLvoid *ptr);
150
151
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000152extern void GLAPIENTRY
Brian Paul1f0e2132000-06-12 15:30:51 +0000153_mesa_IndexPointerEXT(GLenum type, GLsizei stride, GLsizei count,
154 const GLvoid *ptr);
155
156
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000157extern void GLAPIENTRY
Brian Paul1f0e2132000-06-12 15:30:51 +0000158_mesa_TexCoordPointerEXT(GLint size, GLenum type, GLsizei stride,
159 GLsizei count, const GLvoid *ptr);
160
161
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000162extern void GLAPIENTRY
Brian Paul1f0e2132000-06-12 15:30:51 +0000163_mesa_EdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *ptr);
164
165
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000166extern void GLAPIENTRY
Paul Berry1a1db172012-11-06 08:57:59 -0800167_mesa_FogCoordPointer(GLenum type, GLsizei stride, const GLvoid *ptr);
Brian Paul1f0e2132000-06-12 15:30:51 +0000168
Brian Paul2edd1802002-01-11 17:25:35 +0000169
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000170extern void GLAPIENTRY
Paul Berry1a1db172012-11-06 08:57:59 -0800171_mesa_SecondaryColorPointer(GLint size, GLenum type,
Keith Whitwellfe5d67d2000-10-27 16:44:40 +0000172 GLsizei stride, const GLvoid *ptr);
Brian Paul1f0e2132000-06-12 15:30:51 +0000173
174
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000175extern void GLAPIENTRY
Paul Berry1a1db172012-11-06 08:57:59 -0800176_mesa_PointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *ptr);
Brian Pauld378f7b2008-06-25 08:45:14 -0600177
178
179extern void GLAPIENTRY
Paul Berry1a1db172012-11-06 08:57:59 -0800180_mesa_VertexAttribPointer(GLuint index, GLint size, GLenum type,
Brian Paul92f97852003-05-01 22:44:02 +0000181 GLboolean normalized, GLsizei stride,
182 const GLvoid *pointer);
183
Brian Paule00d07c2010-05-25 21:12:24 -0600184void GLAPIENTRY
185_mesa_VertexAttribIPointer(GLuint index, GLint size, GLenum type,
Brian Paule00d07c2010-05-25 21:12:24 -0600186 GLsizei stride, const GLvoid *ptr);
187
Dave Airlie5a7f0492015-02-20 11:26:33 +1000188extern void GLAPIENTRY
189_mesa_VertexAttribLPointer(GLuint index, GLint size, GLenum type,
190 GLsizei stride, const GLvoid *pointer);
Brian Paul92f97852003-05-01 22:44:02 +0000191
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000192extern void GLAPIENTRY
Paul Berry1a1db172012-11-06 08:57:59 -0800193_mesa_EnableVertexAttribArray(GLuint index);
Brian Pauld3f598a2010-05-25 21:42:13 -0600194
195
196extern void GLAPIENTRY
Fredrik Höglundc99efbd2015-03-02 18:27:58 +0100197_mesa_EnableVertexArrayAttrib(GLuint vaobj, GLuint index);
198
199
200extern void GLAPIENTRY
Paul Berry1a1db172012-11-06 08:57:59 -0800201_mesa_DisableVertexAttribArray(GLuint index);
Brian Pauld3f598a2010-05-25 21:42:13 -0600202
203
204extern void GLAPIENTRY
Fredrik Höglund96b64632015-03-02 18:27:18 +0100205_mesa_DisableVertexArrayAttrib(GLuint vaobj, GLuint index);
206
207
208extern void GLAPIENTRY
Paul Berry1a1db172012-11-06 08:57:59 -0800209_mesa_GetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params);
Brian Pauld3f598a2010-05-25 21:42:13 -0600210
Brian Pauld3f598a2010-05-25 21:42:13 -0600211extern void GLAPIENTRY
Paul Berry1a1db172012-11-06 08:57:59 -0800212_mesa_GetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params);
Brian Pauld3f598a2010-05-25 21:42:13 -0600213
Dave Airlie5a7f0492015-02-20 11:26:33 +1000214extern void GLAPIENTRY
215_mesa_GetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params);
Brian Pauld3f598a2010-05-25 21:42:13 -0600216
217extern void GLAPIENTRY
Paul Berry1a1db172012-11-06 08:57:59 -0800218_mesa_GetVertexAttribiv(GLuint index, GLenum pname, GLint *params);
Brian Pauld3f598a2010-05-25 21:42:13 -0600219
220
221extern void GLAPIENTRY
222_mesa_GetVertexAttribIiv(GLuint index, GLenum pname, GLint *params);
223
224
225extern void GLAPIENTRY
226_mesa_GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params);
227
228
229extern void GLAPIENTRY
Paul Berry1a1db172012-11-06 08:57:59 -0800230_mesa_GetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid **pointer);
Brian Pauld3f598a2010-05-25 21:42:13 -0600231
232
Fredrik Höglund97b268f2015-03-02 19:07:52 +0100233void GLAPIENTRY
234_mesa_GetVertexArrayIndexediv(GLuint vaobj, GLuint index,
235 GLenum pname, GLint *param);
236
237
238void GLAPIENTRY
239_mesa_GetVertexArrayIndexed64iv(GLuint vaobj, GLuint index,
240 GLenum pname, GLint64 *param);
241
242
Brian Pauld3f598a2010-05-25 21:42:13 -0600243extern void GLAPIENTRY
Brian Paul2edd1802002-01-11 17:25:35 +0000244_mesa_InterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer);
245
Brian Paulfbd8f211999-11-11 01:22:25 +0000246
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000247extern void GLAPIENTRY
Paul Berry1a1db172012-11-06 08:57:59 -0800248_mesa_MultiDrawArrays( GLenum mode, const GLint *first,
Brian Paul79938322010-09-14 09:37:35 -0600249 const GLsizei *count, GLsizei primcount );
Brian Paul2525bc72002-06-30 15:47:00 +0000250
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000251extern void GLAPIENTRY
Brian Paul2525bc72002-06-30 15:47:00 +0000252_mesa_MultiDrawElementsEXT( GLenum mode, const GLsizei *count, GLenum type,
253 const GLvoid **indices, GLsizei primcount );
254
Eric Anholt92d7ed82009-08-27 10:09:24 -0700255extern void GLAPIENTRY
256_mesa_MultiDrawElementsBaseVertex( GLenum mode,
257 const GLsizei *count, GLenum type,
258 const GLvoid **indices, GLsizei primcount,
259 const GLint *basevertex);
Ian Romanick3baefe62003-08-22 23:28:03 +0000260
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000261extern void GLAPIENTRY
Ian Romanick3baefe62003-08-22 23:28:03 +0000262_mesa_MultiModeDrawArraysIBM( const GLenum * mode, const GLint * first,
263 const GLsizei * count,
264 GLsizei primcount, GLint modestride );
265
266
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000267extern void GLAPIENTRY
Ian Romanick3baefe62003-08-22 23:28:03 +0000268_mesa_MultiModeDrawElementsIBM( const GLenum * mode, const GLsizei * count,
269 GLenum type, const GLvoid * const * indices,
270 GLsizei primcount, GLint modestride );
271
Eric Anholt5857e982008-02-02 02:54:13 -0800272extern void GLAPIENTRY
273_mesa_LockArraysEXT(GLint first, GLsizei count);
274
275extern void GLAPIENTRY
276_mesa_UnlockArraysEXT( void );
Ian Romanick3baefe62003-08-22 23:28:03 +0000277
Brian Paulfeb722f2008-06-05 12:01:00 -0600278
279extern void GLAPIENTRY
280_mesa_DrawArrays(GLenum mode, GLint first, GLsizei count);
281
282extern void GLAPIENTRY
Kenneth Graunkeed6a4d62014-08-13 16:02:17 -0700283_mesa_DrawArraysInstanced(GLenum mode, GLint first, GLsizei count,
284 GLsizei primcount);
285
286extern void GLAPIENTRY
Brian Paulfeb722f2008-06-05 12:01:00 -0600287_mesa_DrawElements(GLenum mode, GLsizei count, GLenum type,
288 const GLvoid *indices);
289
290extern void GLAPIENTRY
291_mesa_DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count,
292 GLenum type, const GLvoid *indices);
293
Eric Anholt92d7ed82009-08-27 10:09:24 -0700294extern void GLAPIENTRY
295_mesa_DrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type,
296 const GLvoid *indices, GLint basevertex);
297
298extern 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šák14bb9572011-12-09 17:00:23 +0100304extern void GLAPIENTRY
305_mesa_DrawTransformFeedback(GLenum mode, GLuint name);
306
Brian Paula40e6f22010-04-20 21:02:09 -0600307extern void GLAPIENTRY
308_mesa_PrimitiveRestartIndex(GLuint index);
309
Brian Paulfeb722f2008-06-05 12:01:00 -0600310
Brian Paul1d1eb952011-01-15 10:32:34 -0700311extern void GLAPIENTRY
312_mesa_VertexAttribDivisor(GLuint index, GLuint divisor);
313
Kenneth Graunke959d0762013-05-29 08:07:01 -0700314extern unsigned
315_mesa_primitive_restart_index(const struct gl_context *ctx, GLenum ib_type);
Brian Paul1d1eb952011-01-15 10:32:34 -0700316
Fredrik Höglundbb2d02c2013-04-09 20:44:58 +0200317extern void GLAPIENTRY
318_mesa_BindVertexBuffer(GLuint bindingIndex, GLuint buffer, GLintptr offset,
319 GLsizei stride);
320
321extern void GLAPIENTRY
Fredrik Höglundcc9b68e2015-03-02 18:35:10 +0100322_mesa_VertexArrayVertexBuffer(GLuint vaobj, GLuint bindingIndex, GLuint buffer,
323 GLintptr offset, GLsizei stride);
324
325extern void GLAPIENTRY
Fredrik Höglund6655e702013-11-13 19:02:10 +0100326_mesa_BindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers,
327 const GLintptr *offsets, const GLsizei *strides);
328
329extern void GLAPIENTRY
Fredrik Höglund30892682015-03-02 18:37:27 +0100330_mesa_VertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count,
331 const GLuint *buffers,
332 const GLintptr *offsets, const GLsizei *strides);
333
334extern void GLAPIENTRY
Fredrik Höglundbb2d02c2013-04-09 20:44:58 +0200335_mesa_VertexAttribFormat(GLuint attribIndex, GLint size, GLenum type,
336 GLboolean normalized, GLuint relativeOffset);
337
338extern void GLAPIENTRY
Fredrik Höglundf0030b02015-03-02 18:44:00 +0100339_mesa_VertexArrayAttribFormat(GLuint vaobj, GLuint attribIndex, GLint size,
340 GLenum type, GLboolean normalized,
341 GLuint relativeOffset);
342
343extern void GLAPIENTRY
Fredrik Höglundbb2d02c2013-04-09 20:44:58 +0200344_mesa_VertexAttribIFormat(GLuint attribIndex, GLint size, GLenum type,
345 GLuint relativeOffset);
346
347extern void GLAPIENTRY
Fredrik Höglundf0030b02015-03-02 18:44:00 +0100348_mesa_VertexArrayAttribIFormat(GLuint vaobj, GLuint attribIndex,
349 GLint size, GLenum type,
350 GLuint relativeOffset);
351
352extern void GLAPIENTRY
Fredrik Höglundbb2d02c2013-04-09 20:44:58 +0200353_mesa_VertexAttribLFormat(GLuint attribIndex, GLint size, GLenum type,
354 GLuint relativeOffset);
355
356extern void GLAPIENTRY
Fredrik Höglundf0030b02015-03-02 18:44:00 +0100357_mesa_VertexArrayAttribLFormat(GLuint vaobj, GLuint attribIndex,
358 GLint size, GLenum type,
359 GLuint relativeOffset);
360
361extern void GLAPIENTRY
Fredrik Höglundbb2d02c2013-04-09 20:44:58 +0200362_mesa_VertexAttribBinding(GLuint attribIndex, GLuint bindingIndex);
363
364extern void GLAPIENTRY
Fredrik Höglunddc2eaaf2015-03-02 18:49:06 +0100365_mesa_VertexArrayAttribBinding(GLuint vaobj, GLuint attribIndex,
366 GLuint bindingIndex);
367
368extern void GLAPIENTRY
Fredrik Höglundbb2d02c2013-04-09 20:44:58 +0200369_mesa_VertexBindingDivisor(GLuint bindingIndex, GLuint divisor);
370
Fredrik Höglund0a895c32015-03-02 18:52:36 +0100371extern void GLAPIENTRY
372_mesa_VertexArrayBindingDivisor(GLuint vaobj, GLuint bindingIndex, GLuint divisor);
Fredrik Höglundbb2d02c2013-04-09 20:44:58 +0200373
Brian Paul39d75242009-05-14 16:25:32 -0600374extern void
Kristian Høgsbergf9995b32010-10-12 12:26:10 -0400375_mesa_copy_client_array(struct gl_context *ctx,
Brian Paulc5388462016-10-26 09:33:49 -0700376 struct gl_vertex_array *dst,
377 struct gl_vertex_array *src);
Brian Paulb2885402009-08-06 13:53:06 -0600378
Fredrik Höglund59b01ca2013-04-09 20:54:25 +0200379extern void
380_mesa_copy_vertex_attrib_array(struct gl_context *ctx,
Brian Paul15fb88e2016-10-06 17:30:20 -0600381 struct gl_array_attributes *dst,
382 const struct gl_array_attributes *src);
Fredrik Höglund59b01ca2013-04-09 20:54:25 +0200383
384extern 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 Paulb2885402009-08-06 13:53:06 -0600388
389extern void
Kristian Høgsbergf9995b32010-10-12 12:26:10 -0400390_mesa_print_arrays(struct gl_context *ctx);
Brian Paulfeb722f2008-06-05 12:01:00 -0600391
Keith Whitwell6dc85572003-07-17 13:43:59 +0000392extern void
Kristian Høgsbergf9995b32010-10-12 12:26:10 -0400393_mesa_init_varray( struct gl_context * ctx );
Keith Whitwell6dc85572003-07-17 13:43:59 +0000394
Brian Paul12cf98f2009-06-19 17:58:47 -0600395extern void
Kristian Høgsbergf9995b32010-10-12 12:26:10 -0400396_mesa_free_varray_data(struct gl_context *ctx);
Brian Paul12cf98f2009-06-19 17:58:47 -0600397
jtgafb833d1999-08-19 00:55:39 +0000398#endif