blob: 79c027aa4d48321d7fb768967451866c54ae5618 [file] [log] [blame]
Brian Paul6061df02003-03-29 17:01:00 +00001/*
2 * Mesa 3-D graphics library
Brian Pauldc0b71f2009-06-02 20:29:57 -06003 * Version: 7.6
Brian Paul6061df02003-03-29 17:01:00 +00004 *
Briana429a252008-03-21 13:41:00 -06005 * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
Brian Pauldc0b71f2009-06-02 20:29:57 -06006 * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
Brian Paul6061df02003-03-29 17:01:00 +00007 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included
16 * in all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 */
25
26
27
28#ifndef BUFFEROBJ_H
29#define BUFFEROBJ_H
30
31
Brian Paul148a2842003-09-17 03:40:11 +000032#include "context.h"
33
34
Brian Paulc7b872a2003-09-09 13:44:40 +000035/*
36 * Internal functions
37 */
38
39extern void
Brian Paul148a2842003-09-17 03:40:11 +000040_mesa_init_buffer_objects( GLcontext *ctx );
41
Brian4b654d42007-08-23 08:53:43 +010042extern void
43_mesa_update_default_objects_buffer_objects(GLcontext *ctx);
44
Brian Paulc7b872a2003-09-09 13:44:40 +000045extern struct gl_buffer_object *
46_mesa_new_buffer_object( GLcontext *ctx, GLuint name, GLenum target );
47
48extern void
Brian Paul148a2842003-09-17 03:40:11 +000049_mesa_delete_buffer_object( GLcontext *ctx, struct gl_buffer_object *bufObj );
50
Brian Paul4d12a052006-08-23 23:10:14 +000051extern struct gl_buffer_object *
52_mesa_lookup_bufferobj(GLcontext *ctx, GLuint buffer);
53
Brian Paul148a2842003-09-17 03:40:11 +000054extern void
Brian Paulc7b872a2003-09-09 13:44:40 +000055_mesa_initialize_buffer_object( struct gl_buffer_object *obj,
56 GLuint name, GLenum target );
57
58extern void
Brian Paul37c74af2008-09-04 14:58:02 -060059_mesa_reference_buffer_object(GLcontext *ctx,
60 struct gl_buffer_object **ptr,
61 struct gl_buffer_object *bufObj);
Brian Paulc7b872a2003-09-09 13:44:40 +000062
63extern void
64_mesa_buffer_data( GLcontext *ctx, GLenum target, GLsizeiptrARB size,
65 const GLvoid * data, GLenum usage,
66 struct gl_buffer_object * bufObj );
67
68extern void
69_mesa_buffer_subdata( GLcontext *ctx, GLenum target, GLintptrARB offset,
70 GLsizeiptrARB size, const GLvoid * data,
71 struct gl_buffer_object * bufObj );
72
73extern void
74_mesa_buffer_get_subdata( GLcontext *ctx, GLenum target, GLintptrARB offset,
75 GLsizeiptrARB size, GLvoid * data,
76 struct gl_buffer_object * bufObj );
77
78extern void *
79_mesa_buffer_map( GLcontext *ctx, GLenum target, GLenum access,
80 struct gl_buffer_object * bufObj );
81
Brian Paul2daa4132004-10-31 00:17:42 +000082extern GLboolean
83_mesa_buffer_unmap( GLcontext *ctx, GLenum target,
84 struct gl_buffer_object * bufObj );
Brian Paulc7b872a2003-09-09 13:44:40 +000085
Brian Pauldc0b71f2009-06-02 20:29:57 -060086extern void
87_mesa_copy_buffer_subdata(GLcontext *ctx,
88 struct gl_buffer_object *src,
89 struct gl_buffer_object *dst,
90 GLintptr readOffset, GLintptr writeOffset,
91 GLsizeiptr size);
92
Brian Paul7a6b71e2004-03-13 18:21:40 +000093extern GLboolean
Brian Paul60909382004-11-10 15:46:52 +000094_mesa_validate_pbo_access(GLuint dimensions,
95 const struct gl_pixelstore_attrib *pack,
Brian Paul7a6b71e2004-03-13 18:21:40 +000096 GLsizei width, GLsizei height, GLsizei depth,
97 GLenum format, GLenum type, const GLvoid *ptr);
98
Briana429a252008-03-21 13:41:00 -060099extern const GLubyte *
Briand933be62008-03-21 14:19:28 -0600100_mesa_map_bitmap_pbo(GLcontext *ctx,
101 const struct gl_pixelstore_attrib *unpack,
102 const GLubyte *bitmap);
Briana429a252008-03-21 13:41:00 -0600103
104extern void
105_mesa_unmap_bitmap_pbo(GLcontext *ctx,
106 const struct gl_pixelstore_attrib *unpack);
107
108extern const GLvoid *
Briand933be62008-03-21 14:19:28 -0600109_mesa_map_drawpix_pbo(GLcontext *ctx,
110 const struct gl_pixelstore_attrib *unpack,
111 const GLvoid *pixels);
Briana429a252008-03-21 13:41:00 -0600112
113extern void
Brian Paul1437b412008-04-25 14:15:42 -0600114_mesa_unmap_drawpix_pbo(GLcontext *ctx,
115 const struct gl_pixelstore_attrib *unpack);
Briana429a252008-03-21 13:41:00 -0600116
117extern void *
Briand933be62008-03-21 14:19:28 -0600118_mesa_map_readpix_pbo(GLcontext *ctx,
119 const struct gl_pixelstore_attrib *pack,
120 GLvoid *dest);
Briana429a252008-03-21 13:41:00 -0600121
122extern void
123_mesa_unmap_readpix_pbo(GLcontext *ctx,
124 const struct gl_pixelstore_attrib *pack);
125
126
Brian Paulc7b872a2003-09-09 13:44:40 +0000127
128/*
129 * API functions
130 */
131
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000132extern void GLAPIENTRY
Brian Paul6061df02003-03-29 17:01:00 +0000133_mesa_BindBufferARB(GLenum target, GLuint buffer);
134
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000135extern void GLAPIENTRY
Brian Paul6061df02003-03-29 17:01:00 +0000136_mesa_DeleteBuffersARB(GLsizei n, const GLuint * buffer);
137
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000138extern void GLAPIENTRY
Brian Paul6061df02003-03-29 17:01:00 +0000139_mesa_GenBuffersARB(GLsizei n, GLuint * buffer);
140
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000141extern GLboolean GLAPIENTRY
Brian Paul6061df02003-03-29 17:01:00 +0000142_mesa_IsBufferARB(GLuint buffer);
143
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000144extern void GLAPIENTRY
Brian Paul6061df02003-03-29 17:01:00 +0000145_mesa_BufferDataARB(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage);
146
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000147extern void GLAPIENTRY
Brian Paul6061df02003-03-29 17:01:00 +0000148_mesa_BufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data);
149
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000150extern void GLAPIENTRY
Brian Paul6061df02003-03-29 17:01:00 +0000151_mesa_GetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void * data);
152
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000153extern void * GLAPIENTRY
Brian Paul6061df02003-03-29 17:01:00 +0000154_mesa_MapBufferARB(GLenum target, GLenum access);
155
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000156extern GLboolean GLAPIENTRY
Brian Paul6061df02003-03-29 17:01:00 +0000157_mesa_UnmapBufferARB(GLenum target);
158
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000159extern void GLAPIENTRY
Brian Paul6061df02003-03-29 17:01:00 +0000160_mesa_GetBufferParameterivARB(GLenum target, GLenum pname, GLint *params);
161
Kendall Bennettc40d1dd2003-10-21 22:22:17 +0000162extern void GLAPIENTRY
Brian Paul6061df02003-03-29 17:01:00 +0000163_mesa_GetBufferPointervARB(GLenum target, GLenum pname, GLvoid **params);
164
Brian Pauldc0b71f2009-06-02 20:29:57 -0600165extern void GLAPIENTRY
166_mesa_CopyBufferSubData(GLenum readTarget, GLenum writeTarget,
167 GLintptr readOffset, GLintptr writeOffset,
168 GLsizeiptr size);
169
Brian Paul6061df02003-03-29 17:01:00 +0000170#endif