Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1901 serge 1
/*
2
 * Mesa 3-D graphics library
3
 * Version:  7.6
4
 *
5
 * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
6
 * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
7
 *
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
 
32
#include "mtypes.h"
33
 
34
 
35
/*
36
 * Internal functions
37
 */
38
 
39
 
40
/** Is the given buffer object currently mapped? */
41
static INLINE GLboolean
42
_mesa_bufferobj_mapped(const struct gl_buffer_object *obj)
43
{
44
   return obj->Pointer != NULL;
45
}
46
 
47
/**
48
 * Is the given buffer object a user-created buffer object?
49
 * Mesa uses default buffer objects in several places.  Default buffers
50
 * always have Name==0.  User created buffers have Name!=0.
51
 */
52
static INLINE GLboolean
53
_mesa_is_bufferobj(const struct gl_buffer_object *obj)
54
{
55
   return obj->Name != 0;
56
}
57
 
58
 
59
extern void
60
_mesa_init_buffer_objects( struct gl_context *ctx );
61
 
62
extern void
63
_mesa_free_buffer_objects( struct gl_context *ctx );
64
 
65
extern void
66
_mesa_update_default_objects_buffer_objects(struct gl_context *ctx);
67
 
68
 
69
extern struct gl_buffer_object *
70
_mesa_lookup_bufferobj(struct gl_context *ctx, GLuint buffer);
71
 
72
extern void
73
_mesa_initialize_buffer_object( struct gl_buffer_object *obj,
74
				GLuint name, GLenum target );
75
 
76
extern void
77
_mesa_reference_buffer_object(struct gl_context *ctx,
78
                              struct gl_buffer_object **ptr,
79
                              struct gl_buffer_object *bufObj);
80
 
81
extern GLboolean
82
_mesa_validate_pbo_access(GLuint dimensions,
83
                          const struct gl_pixelstore_attrib *pack,
84
                          GLsizei width, GLsizei height, GLsizei depth,
85
                          GLenum format, GLenum type, const GLvoid *ptr);
86
 
87
extern const GLvoid *
88
_mesa_map_pbo_source(struct gl_context *ctx,
89
                     const struct gl_pixelstore_attrib *unpack,
90
                     const GLvoid *src);
91
 
92
extern const GLvoid *
93
_mesa_map_validate_pbo_source(struct gl_context *ctx,
94
                              GLuint dimensions,
95
                              const struct gl_pixelstore_attrib *unpack,
96
                              GLsizei width, GLsizei height, GLsizei depth,
97
                              GLenum format, GLenum type, const GLvoid *ptr,
98
                              const char *where);
99
 
100
extern void
101
_mesa_unmap_pbo_source(struct gl_context *ctx,
102
                       const struct gl_pixelstore_attrib *unpack);
103
 
104
extern void *
105
_mesa_map_pbo_dest(struct gl_context *ctx,
106
                   const struct gl_pixelstore_attrib *pack,
107
                   GLvoid *dest);
108
 
109
extern GLvoid *
110
_mesa_map_validate_pbo_dest(struct gl_context *ctx,
111
                            GLuint dimensions,
112
                            const struct gl_pixelstore_attrib *unpack,
113
                            GLsizei width, GLsizei height, GLsizei depth,
114
                            GLenum format, GLenum type, GLvoid *ptr,
115
                            const char *where);
116
 
117
extern void
118
_mesa_unmap_pbo_dest(struct gl_context *ctx,
119
                     const struct gl_pixelstore_attrib *pack);
120
 
121
 
122
extern void
123
_mesa_init_buffer_object_functions(struct dd_function_table *driver);
124
 
125
 
126
/*
127
 * API functions
128
 */
129
 
130
extern void GLAPIENTRY
131
_mesa_BindBufferARB(GLenum target, GLuint buffer);
132
 
133
extern void GLAPIENTRY
134
_mesa_DeleteBuffersARB(GLsizei n, const GLuint * buffer);
135
 
136
extern void GLAPIENTRY
137
_mesa_GenBuffersARB(GLsizei n, GLuint * buffer);
138
 
139
extern GLboolean GLAPIENTRY
140
_mesa_IsBufferARB(GLuint buffer);
141
 
142
extern void GLAPIENTRY
143
_mesa_BufferDataARB(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage);
144
 
145
extern void GLAPIENTRY
146
_mesa_BufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data);
147
 
148
extern void GLAPIENTRY
149
_mesa_GetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void * data);
150
 
151
extern void * GLAPIENTRY
152
_mesa_MapBufferARB(GLenum target, GLenum access);
153
 
154
extern GLboolean GLAPIENTRY
155
_mesa_UnmapBufferARB(GLenum target);
156
 
157
extern void GLAPIENTRY
158
_mesa_GetBufferParameterivARB(GLenum target, GLenum pname, GLint *params);
159
 
160
extern void GLAPIENTRY
161
_mesa_GetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params);
162
 
163
extern void GLAPIENTRY
164
_mesa_GetBufferPointervARB(GLenum target, GLenum pname, GLvoid **params);
165
 
166
extern void GLAPIENTRY
167
_mesa_CopyBufferSubData(GLenum readTarget, GLenum writeTarget,
168
                        GLintptr readOffset, GLintptr writeOffset,
169
                        GLsizeiptr size);
170
 
171
extern void * GLAPIENTRY
172
_mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length,
173
                     GLbitfield access);
174
 
175
extern void GLAPIENTRY
176
_mesa_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length);
177
 
178
#if FEATURE_APPLE_object_purgeable
179
extern GLenum GLAPIENTRY
180
_mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option);
181
 
182
extern GLenum GLAPIENTRY
183
_mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option);
184
 
185
extern void GLAPIENTRY
186
_mesa_GetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, GLint* params);
187
#endif
188
 
189
#endif