Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5563 serge 1
/*
2
 * Mesa 3-D graphics library
3
 *
4
 * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
5
 * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
6
 *
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:
13
 *
14
 * The above copyright notice and this permission notice shall be included
15
 * in all copies or substantial portions of the Software.
16
 *
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
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.
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 != NULL && 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_context *ctx,
74
				struct gl_buffer_object *obj,
75
				GLuint name, GLenum target );
76
 
77
extern void
78
_mesa_reference_buffer_object_(struct gl_context *ctx,
79
                               struct gl_buffer_object **ptr,
80
                               struct gl_buffer_object *bufObj);
81
 
82
static inline void
83
_mesa_reference_buffer_object(struct gl_context *ctx,
84
                              struct gl_buffer_object **ptr,
85
                              struct gl_buffer_object *bufObj)
86
{
87
   if (*ptr != bufObj)
88
      _mesa_reference_buffer_object_(ctx, ptr, bufObj);
89
}
90
 
91
extern GLuint
92
_mesa_total_buffer_object_memory(struct gl_context *ctx);
93
 
94
extern void
95
_mesa_init_buffer_object_functions(struct dd_function_table *driver);
96
 
97
 
98
/*
99
 * API functions
100
 */
101
 
102
void GLAPIENTRY
103
_mesa_BindBuffer(GLenum target, GLuint buffer);
104
void GLAPIENTRY
105
_mesa_DeleteBuffers(GLsizei n, const GLuint * buffer);
106
void GLAPIENTRY
107
_mesa_GenBuffers(GLsizei n, GLuint * buffer);
108
GLboolean GLAPIENTRY
109
_mesa_IsBuffer(GLuint buffer);
110
void GLAPIENTRY
111
_mesa_BufferData(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage);
112
void GLAPIENTRY
113
_mesa_BufferSubData(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data);
114
void GLAPIENTRY
115
_mesa_GetBufferSubData(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void * data);
116
void * GLAPIENTRY
117
_mesa_MapBuffer(GLenum target, GLenum access);
118
GLboolean GLAPIENTRY
119
_mesa_UnmapBuffer(GLenum target);
120
void GLAPIENTRY
121
_mesa_GetBufferParameteriv(GLenum target, GLenum pname, GLint *params);
122
void GLAPIENTRY
123
_mesa_GetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params);
124
void GLAPIENTRY
125
_mesa_GetBufferPointerv(GLenum target, GLenum pname, GLvoid **params);
126
void GLAPIENTRY
127
_mesa_CopyBufferSubData(GLenum readTarget, GLenum writeTarget,
128
                        GLintptr readOffset, GLintptr writeOffset,
129
                        GLsizeiptr size);
130
void * GLAPIENTRY
131
_mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length,
132
                     GLbitfield access);
133
void GLAPIENTRY
134
_mesa_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length);
135
GLenum GLAPIENTRY
136
_mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option);
137
GLenum GLAPIENTRY
138
_mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option);
139
void GLAPIENTRY
140
_mesa_GetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname,
141
                                GLint* params);
142
void GLAPIENTRY
143
_mesa_BindBufferRange(GLenum target, GLuint index,
144
                      GLuint buffer, GLintptr offset, GLsizeiptr size);
145
void GLAPIENTRY
146
_mesa_BindBufferBase(GLenum target, GLuint index, GLuint buffer);
147
void GLAPIENTRY
148
_mesa_InvalidateBufferSubData(GLuint buffer, GLintptr offset,
149
                              GLsizeiptr length);
150
void GLAPIENTRY
151
_mesa_InvalidateBufferData(GLuint buffer);
152
 
153
 
154
#endif