Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/include/GL/osmesa.h
4545 views
1
/*
2
* Mesa 3-D graphics library
3
*
4
* Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a
7
* copy of this software and associated documentation files (the "Software"),
8
* to deal in the Software without restriction, including without limitation
9
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
10
* and/or sell copies of the Software, and to permit persons to whom the
11
* Software is furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included
14
* in all copies or substantial portions of the Software.
15
*
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
* OTHER DEALINGS IN THE SOFTWARE.
23
*/
24
25
26
/*
27
* Mesa Off-Screen rendering interface.
28
*
29
* This is an operating system and window system independent interface to
30
* Mesa which allows one to render images into a client-supplied buffer in
31
* main memory. Such images may manipulated or saved in whatever way the
32
* client wants.
33
*
34
* These are the API functions:
35
* OSMesaCreateContext - create a new Off-Screen Mesa rendering context
36
* OSMesaMakeCurrent - bind an OSMesaContext to a client's image buffer
37
* and make the specified context the current one.
38
* OSMesaDestroyContext - destroy an OSMesaContext
39
* OSMesaGetCurrentContext - return thread's current context ID
40
* OSMesaPixelStore - controls how pixels are stored in image buffer
41
* OSMesaGetIntegerv - return OSMesa state parameters
42
*
43
*
44
* The limits on the width and height of an image buffer can be retrieved
45
* via OSMesaGetIntegerv(OSMESA_MAX_WIDTH/OSMESA_MAX_HEIGHT).
46
*/
47
48
49
#ifndef OSMESA_H
50
#define OSMESA_H
51
52
53
#ifdef __cplusplus
54
extern "C" {
55
#endif
56
57
58
#include <GL/gl.h>
59
60
61
#define OSMESA_MAJOR_VERSION 11
62
#define OSMESA_MINOR_VERSION 2
63
#define OSMESA_PATCH_VERSION 0
64
65
66
67
/*
68
* Values for the format parameter of OSMesaCreateContext()
69
* New in version 2.0.
70
*/
71
#define OSMESA_COLOR_INDEX GL_COLOR_INDEX
72
#define OSMESA_RGBA GL_RGBA
73
#define OSMESA_BGRA 0x1
74
#define OSMESA_ARGB 0x2
75
#define OSMESA_RGB GL_RGB
76
#define OSMESA_BGR 0x4
77
#define OSMESA_RGB_565 0x5
78
79
80
/*
81
* OSMesaPixelStore() parameters:
82
* New in version 2.0.
83
*/
84
#define OSMESA_ROW_LENGTH 0x10
85
#define OSMESA_Y_UP 0x11
86
87
88
/*
89
* Accepted by OSMesaGetIntegerv:
90
*/
91
#define OSMESA_WIDTH 0x20
92
#define OSMESA_HEIGHT 0x21
93
#define OSMESA_FORMAT 0x22
94
#define OSMESA_TYPE 0x23
95
#define OSMESA_MAX_WIDTH 0x24 /* new in 4.0 */
96
#define OSMESA_MAX_HEIGHT 0x25 /* new in 4.0 */
97
98
/*
99
* Accepted in OSMesaCreateContextAttrib's attribute list.
100
*/
101
#define OSMESA_DEPTH_BITS 0x30
102
#define OSMESA_STENCIL_BITS 0x31
103
#define OSMESA_ACCUM_BITS 0x32
104
#define OSMESA_PROFILE 0x33
105
#define OSMESA_CORE_PROFILE 0x34
106
#define OSMESA_COMPAT_PROFILE 0x35
107
#define OSMESA_CONTEXT_MAJOR_VERSION 0x36
108
#define OSMESA_CONTEXT_MINOR_VERSION 0x37
109
110
111
typedef struct osmesa_context *OSMesaContext;
112
113
114
/*
115
* Create an Off-Screen Mesa rendering context. The only attribute needed is
116
* an RGBA vs Color-Index mode flag.
117
*
118
* Input: format - one of OSMESA_COLOR_INDEX, OSMESA_RGBA, OSMESA_BGRA,
119
* OSMESA_ARGB, OSMESA_RGB, or OSMESA_BGR.
120
* sharelist - specifies another OSMesaContext with which to share
121
* display lists. NULL indicates no sharing.
122
* Return: an OSMesaContext or 0 if error
123
*/
124
GLAPI OSMesaContext GLAPIENTRY
125
OSMesaCreateContext( GLenum format, OSMesaContext sharelist );
126
127
128
129
/*
130
* Create an Off-Screen Mesa rendering context and specify desired
131
* size of depth buffer, stencil buffer and accumulation buffer.
132
* If you specify zero for depthBits, stencilBits, accumBits you
133
* can save some memory.
134
*
135
* New in Mesa 3.5
136
*/
137
GLAPI OSMesaContext GLAPIENTRY
138
OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits,
139
GLint accumBits, OSMesaContext sharelist);
140
141
142
/*
143
* Create an Off-Screen Mesa rendering context with attribute list.
144
* The list is composed of (attribute, value) pairs and terminated with
145
* attribute==0. Supported Attributes:
146
*
147
* Attributes Values
148
* --------------------------------------------------------------------------
149
* OSMESA_FORMAT OSMESA_RGBA*, OSMESA_BGRA, OSMESA_ARGB, etc.
150
* OSMESA_DEPTH_BITS 0*, 16, 24, 32
151
* OSMESA_STENCIL_BITS 0*, 8
152
* OSMESA_ACCUM_BITS 0*, 16
153
* OSMESA_PROFILE OSMESA_COMPAT_PROFILE*, OSMESA_CORE_PROFILE
154
* OSMESA_CONTEXT_MAJOR_VERSION 1*, 2, 3
155
* OSMESA_CONTEXT_MINOR_VERSION 0+
156
*
157
* Note: * = default value
158
*
159
* We return a context version >= what's specified by OSMESA_CONTEXT_MAJOR/
160
* MINOR_VERSION for the given profile. For example, if you request a GL 1.4
161
* compat profile, you might get a GL 3.0 compat profile.
162
* Otherwise, null is returned if the version/profile is not supported.
163
*
164
* New in Mesa 11.2
165
*/
166
GLAPI OSMesaContext GLAPIENTRY
167
OSMesaCreateContextAttribs( const int *attribList, OSMesaContext sharelist );
168
169
170
171
/*
172
* Destroy an Off-Screen Mesa rendering context.
173
*
174
* Input: ctx - the context to destroy
175
*/
176
GLAPI void GLAPIENTRY
177
OSMesaDestroyContext( OSMesaContext ctx );
178
179
180
181
/*
182
* Bind an OSMesaContext to an image buffer. The image buffer is just a
183
* block of memory which the client provides. Its size must be at least
184
* as large as width*height*sizeof(type). Its address should be a multiple
185
* of 4 if using RGBA mode.
186
*
187
* Image data is stored in the order of glDrawPixels: row-major order
188
* with the lower-left image pixel stored in the first array position
189
* (ie. bottom-to-top).
190
*
191
* Since the only type initially supported is GL_UNSIGNED_BYTE, if the
192
* context is in RGBA mode, each pixel will be stored as a 4-byte RGBA
193
* value. If the context is in color indexed mode, each pixel will be
194
* stored as a 1-byte value.
195
*
196
* If the context's viewport hasn't been initialized yet, it will now be
197
* initialized to (0,0,width,height).
198
*
199
* Input: ctx - the rendering context
200
* buffer - the image buffer memory
201
* type - data type for pixel components, only GL_UNSIGNED_BYTE
202
* supported now
203
* width, height - size of image buffer in pixels, at least 1
204
* Return: GL_TRUE if success, GL_FALSE if error because of invalid ctx,
205
* invalid buffer address, type!=GL_UNSIGNED_BYTE, width<1, height<1,
206
* width>internal limit or height>internal limit.
207
*/
208
GLAPI GLboolean GLAPIENTRY
209
OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type,
210
GLsizei width, GLsizei height );
211
212
213
214
215
/*
216
* Return the current Off-Screen Mesa rendering context handle.
217
*/
218
GLAPI OSMesaContext GLAPIENTRY
219
OSMesaGetCurrentContext( void );
220
221
222
223
/*
224
* Set pixel store/packing parameters for the current context.
225
* This is similar to glPixelStore.
226
* Input: pname - OSMESA_ROW_LENGTH
227
* specify actual pixels per row in image buffer
228
* 0 = same as image width (default)
229
* OSMESA_Y_UP
230
* zero = Y coordinates increase downward
231
* non-zero = Y coordinates increase upward (default)
232
* value - the value for the parameter pname
233
*
234
* New in version 2.0.
235
*/
236
GLAPI void GLAPIENTRY
237
OSMesaPixelStore( GLint pname, GLint value );
238
239
240
241
/*
242
* Return an integer value like glGetIntegerv.
243
* Input: pname -
244
* OSMESA_WIDTH return current image width
245
* OSMESA_HEIGHT return current image height
246
* OSMESA_FORMAT return image format
247
* OSMESA_TYPE return color component data type
248
* OSMESA_ROW_LENGTH return row length in pixels
249
* OSMESA_Y_UP returns 1 or 0 to indicate Y axis direction
250
* value - pointer to integer in which to return result.
251
*/
252
GLAPI void GLAPIENTRY
253
OSMesaGetIntegerv( GLint pname, GLint *value );
254
255
256
257
/*
258
* Return the depth buffer associated with an OSMesa context.
259
* Input: c - the OSMesa context
260
* Output: width, height - size of buffer in pixels
261
* bytesPerValue - bytes per depth value (2 or 4)
262
* buffer - pointer to depth buffer values
263
* Return: GL_TRUE or GL_FALSE to indicate success or failure.
264
*
265
* New in Mesa 2.4.
266
*/
267
GLAPI GLboolean GLAPIENTRY
268
OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height,
269
GLint *bytesPerValue, void **buffer );
270
271
272
273
/*
274
* Return the color buffer associated with an OSMesa context.
275
* Input: c - the OSMesa context
276
* Output: width, height - size of buffer in pixels
277
* format - buffer format (OSMESA_FORMAT)
278
* buffer - pointer to depth buffer values
279
* Return: GL_TRUE or GL_FALSE to indicate success or failure.
280
*
281
* New in Mesa 3.3.
282
*/
283
GLAPI GLboolean GLAPIENTRY
284
OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height,
285
GLint *format, void **buffer );
286
287
288
289
/**
290
* This typedef is new in Mesa 6.3.
291
*/
292
typedef void (*OSMESAproc)();
293
294
295
/*
296
* Return pointer to the named function.
297
* New in Mesa 4.1
298
* Return OSMESAproc in 6.3.
299
*/
300
GLAPI OSMESAproc GLAPIENTRY
301
OSMesaGetProcAddress( const char *funcName );
302
303
304
305
/**
306
* Enable/disable color clamping, off by default.
307
* New in Mesa 6.4.2
308
*/
309
GLAPI void GLAPIENTRY
310
OSMesaColorClamp(GLboolean enable);
311
312
313
/**
314
* Enable/disable Gallium post-process filters.
315
* This should be called after a context is created, but before it is
316
* made current for the first time. After a context has been made
317
* current, this function has no effect.
318
* If the enable_value param is zero, the filter is disabled. Otherwise
319
* the filter is enabled, and the value may control the filter's quality.
320
* New in Mesa 10.0
321
*/
322
GLAPI void GLAPIENTRY
323
OSMesaPostprocess(OSMesaContext osmesa, const char *filter,
324
unsigned enable_value);
325
326
327
#ifdef __cplusplus
328
}
329
#endif
330
331
332
#endif
333
334