VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/x11include/mesa-7.2/GL/glx.h@ 68495

Last change on this file since 68495 was 64269, checked in by vboxsync, 8 years ago

bugref:3810: X11 Guest Additions maintenance: remove unnecessary parts of the Mesa 7.2 sources from the tree, leaving only public OpenGL header files. The reason we are not just switching to using the Mesa 11 headers is that they currently conflict with our API definitions in APIspec.txt including due to increased const-correctness.

File size: 14.9 KB
Line 
1/*
2 * Mesa 3-D graphics library
3 * Version: 6.5
4 *
5 * Copyright (C) 1999-2006 Brian Paul 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 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 */
24
25
26#ifndef GLX_H
27#define GLX_H
28
29
30#ifdef __VMS
31#include <GL/vms_x_fix.h>
32# ifdef __cplusplus
33/* VMS Xlib.h gives problems with C++.
34 * this avoids a bunch of trivial warnings */
35#pragma message disable nosimpint
36#endif
37#endif
38#include <X11/Xlib.h>
39#include <X11/Xutil.h>
40#ifdef __VMS
41# ifdef __cplusplus
42#pragma message enable nosimpint
43#endif
44#endif
45#include <GL/gl.h>
46
47
48#if defined(USE_MGL_NAMESPACE)
49#include "glx_mangle.h"
50#endif
51
52
53#ifdef __cplusplus
54extern "C" {
55#endif
56
57
58#define GLX_VERSION_1_1 1
59#define GLX_VERSION_1_2 1
60#define GLX_VERSION_1_3 1
61#define GLX_VERSION_1_4 1
62
63#define GLX_EXTENSION_NAME "GLX"
64
65
66
67/*
68 * Tokens for glXChooseVisual and glXGetConfig:
69 */
70#define GLX_USE_GL 1
71#define GLX_BUFFER_SIZE 2
72#define GLX_LEVEL 3
73#define GLX_RGBA 4
74#define GLX_DOUBLEBUFFER 5
75#define GLX_STEREO 6
76#define GLX_AUX_BUFFERS 7
77#define GLX_RED_SIZE 8
78#define GLX_GREEN_SIZE 9
79#define GLX_BLUE_SIZE 10
80#define GLX_ALPHA_SIZE 11
81#define GLX_DEPTH_SIZE 12
82#define GLX_STENCIL_SIZE 13
83#define GLX_ACCUM_RED_SIZE 14
84#define GLX_ACCUM_GREEN_SIZE 15
85#define GLX_ACCUM_BLUE_SIZE 16
86#define GLX_ACCUM_ALPHA_SIZE 17
87
88
89/*
90 * Error codes returned by glXGetConfig:
91 */
92#define GLX_BAD_SCREEN 1
93#define GLX_BAD_ATTRIBUTE 2
94#define GLX_NO_EXTENSION 3
95#define GLX_BAD_VISUAL 4
96#define GLX_BAD_CONTEXT 5
97#define GLX_BAD_VALUE 6
98#define GLX_BAD_ENUM 7
99
100
101/*
102 * GLX 1.1 and later:
103 */
104#define GLX_VENDOR 1
105#define GLX_VERSION 2
106#define GLX_EXTENSIONS 3
107
108
109/*
110 * GLX 1.3 and later:
111 */
112#define GLX_CONFIG_CAVEAT 0x20
113#define GLX_DONT_CARE 0xFFFFFFFF
114#define GLX_X_VISUAL_TYPE 0x22
115#define GLX_TRANSPARENT_TYPE 0x23
116#define GLX_TRANSPARENT_INDEX_VALUE 0x24
117#define GLX_TRANSPARENT_RED_VALUE 0x25
118#define GLX_TRANSPARENT_GREEN_VALUE 0x26
119#define GLX_TRANSPARENT_BLUE_VALUE 0x27
120#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
121#define GLX_WINDOW_BIT 0x00000001
122#define GLX_PIXMAP_BIT 0x00000002
123#define GLX_PBUFFER_BIT 0x00000004
124#define GLX_AUX_BUFFERS_BIT 0x00000010
125#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
126#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
127#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
128#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
129#define GLX_DEPTH_BUFFER_BIT 0x00000020
130#define GLX_STENCIL_BUFFER_BIT 0x00000040
131#define GLX_ACCUM_BUFFER_BIT 0x00000080
132#define GLX_NONE 0x8000
133#define GLX_SLOW_CONFIG 0x8001
134#define GLX_TRUE_COLOR 0x8002
135#define GLX_DIRECT_COLOR 0x8003
136#define GLX_PSEUDO_COLOR 0x8004
137#define GLX_STATIC_COLOR 0x8005
138#define GLX_GRAY_SCALE 0x8006
139#define GLX_STATIC_GRAY 0x8007
140#define GLX_TRANSPARENT_RGB 0x8008
141#define GLX_TRANSPARENT_INDEX 0x8009
142#define GLX_VISUAL_ID 0x800B
143#define GLX_SCREEN 0x800C
144#define GLX_NON_CONFORMANT_CONFIG 0x800D
145#define GLX_DRAWABLE_TYPE 0x8010
146#define GLX_RENDER_TYPE 0x8011
147#define GLX_X_RENDERABLE 0x8012
148#define GLX_FBCONFIG_ID 0x8013
149#define GLX_RGBA_TYPE 0x8014
150#define GLX_COLOR_INDEX_TYPE 0x8015
151#define GLX_MAX_PBUFFER_WIDTH 0x8016
152#define GLX_MAX_PBUFFER_HEIGHT 0x8017
153#define GLX_MAX_PBUFFER_PIXELS 0x8018
154#define GLX_PRESERVED_CONTENTS 0x801B
155#define GLX_LARGEST_PBUFFER 0x801C
156#define GLX_WIDTH 0x801D
157#define GLX_HEIGHT 0x801E
158#define GLX_EVENT_MASK 0x801F
159#define GLX_DAMAGED 0x8020
160#define GLX_SAVED 0x8021
161#define GLX_WINDOW 0x8022
162#define GLX_PBUFFER 0x8023
163#define GLX_PBUFFER_HEIGHT 0x8040
164#define GLX_PBUFFER_WIDTH 0x8041
165#define GLX_RGBA_BIT 0x00000001
166#define GLX_COLOR_INDEX_BIT 0x00000002
167#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
168
169
170/*
171 * GLX 1.4 and later:
172 */
173#define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/
174#define GLX_SAMPLES 0x186a1 /*100001*/
175
176
177
178typedef struct __GLXcontextRec *GLXContext;
179typedef XID GLXPixmap;
180typedef XID GLXDrawable;
181/* GLX 1.3 and later */
182typedef struct __GLXFBConfigRec *GLXFBConfig;
183typedef XID GLXFBConfigID;
184typedef XID GLXContextID;
185typedef XID GLXWindow;
186typedef XID GLXPbuffer;
187
188
189
190extern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
191 int *attribList );
192
193extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
194 GLXContext shareList, Bool direct );
195
196extern void glXDestroyContext( Display *dpy, GLXContext ctx );
197
198extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
199 GLXContext ctx);
200
201extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
202 unsigned long mask );
203
204extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
205
206extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
207 Pixmap pixmap );
208
209extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
210
211extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
212
213extern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
214
215extern Bool glXIsDirect( Display *dpy, GLXContext ctx );
216
217extern int glXGetConfig( Display *dpy, XVisualInfo *visual,
218 int attrib, int *value );
219
220extern GLXContext glXGetCurrentContext( void );
221
222extern GLXDrawable glXGetCurrentDrawable( void );
223
224extern void glXWaitGL( void );
225
226extern void glXWaitX( void );
227
228extern void glXUseXFont( Font font, int first, int count, int list );
229
230
231
232/* GLX 1.1 and later */
233extern const char *glXQueryExtensionsString( Display *dpy, int screen );
234
235extern const char *glXQueryServerString( Display *dpy, int screen, int name );
236
237extern const char *glXGetClientString( Display *dpy, int name );
238
239
240/* GLX 1.2 and later */
241extern Display *glXGetCurrentDisplay( void );
242
243
244/* GLX 1.3 and later */
245extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
246 const int *attribList, int *nitems );
247
248extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
249 int attribute, int *value );
250
251extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen,
252 int *nelements );
253
254extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
255 GLXFBConfig config );
256
257extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config,
258 Window win, const int *attribList );
259
260extern void glXDestroyWindow( Display *dpy, GLXWindow window );
261
262extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config,
263 Pixmap pixmap, const int *attribList );
264
265extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap );
266
267extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
268 const int *attribList );
269
270extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf );
271
272extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
273 unsigned int *value );
274
275extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config,
276 int renderType, GLXContext shareList,
277 Bool direct );
278
279extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
280 GLXDrawable read, GLXContext ctx );
281
282extern GLXDrawable glXGetCurrentReadDrawable( void );
283
284extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute,
285 int *value );
286
287extern void glXSelectEvent( Display *dpy, GLXDrawable drawable,
288 unsigned long mask );
289
290extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
291 unsigned long *mask );
292
293
294/* GLX 1.4 and later */
295extern void (*glXGetProcAddress(const GLubyte *procname))( void );
296
297
298#ifndef GLX_GLXEXT_LEGACY
299
300#include <GL/glxext.h>
301
302#else
303
304
305
306/*
307 * ARB 2. GLX_ARB_get_proc_address
308 */
309#ifndef GLX_ARB_get_proc_address
310#define GLX_ARB_get_proc_address 1
311
312typedef void (*__GLXextFuncPtr)(void);
313extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
314
315#endif /* GLX_ARB_get_proc_address */
316
317
318
319#endif /* GLX_GLXEXT_LEGACY */
320
321
322/**
323 ** The following aren't in glxext.h yet.
324 **/
325
326
327/*
328 * ???. GLX_NV_vertex_array_range
329 */
330#ifndef GLX_NV_vertex_array_range
331#define GLX_NV_vertex_array_range
332
333extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
334extern void glXFreeMemoryNV(GLvoid *pointer);
335typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
336typedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer);
337
338#endif /* GLX_NV_vertex_array_range */
339
340
341/*
342 * ???. GLX_MESA_allocate_memory
343 */
344#ifndef GLX_MESA_allocate_memory
345#define GLX_MESA_allocate_memory 1
346
347extern void *glXAllocateMemoryMESA(Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority);
348extern void glXFreeMemoryMESA(Display *dpy, int scrn, void *pointer);
349extern GLuint glXGetMemoryOffsetMESA(Display *dpy, int scrn, const void *pointer);
350typedef void * ( * PFNGLXALLOCATEMEMORYMESAPROC) (Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority);
351typedef void ( * PFNGLXFREEMEMORYMESAPROC) (Display *dpy, int scrn, void *pointer);
352typedef GLuint (* PFNGLXGETMEMORYOFFSETMESAPROC) (Display *dpy, int scrn, const void *pointer);
353
354#endif /* GLX_MESA_allocate_memory */
355
356
357/*
358 * ARB ?. GLX_ARB_render_texture
359 * XXX This was never finalized!
360 */
361#ifndef GLX_ARB_render_texture
362#define GLX_ARB_render_texture 1
363
364extern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
365extern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
366extern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList);
367
368#endif /* GLX_ARB_render_texture */
369
370
371/*
372 * Remove this when glxext.h is updated.
373 */
374#ifndef GLX_NV_float_buffer
375#define GLX_NV_float_buffer 1
376
377#define GLX_FLOAT_COMPONENTS_NV 0x20B0
378
379#endif /* GLX_NV_float_buffer */
380
381
382
383/*
384 * #?. GLX_MESA_swap_frame_usage
385 */
386#ifndef GLX_MESA_swap_frame_usage
387#define GLX_MESA_swap_frame_usage 1
388
389extern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage);
390extern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
391extern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
392extern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
393
394typedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage);
395typedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
396typedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
397typedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
398
399#endif /* GLX_MESA_swap_frame_usage */
400
401
402
403/*
404 * #?. GLX_MESA_swap_control
405 */
406#ifndef GLX_MESA_swap_control
407#define GLX_MESA_swap_control 1
408
409extern int glXSwapIntervalMESA(unsigned int interval);
410extern int glXGetSwapIntervalMESA(void);
411
412typedef int (*PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval);
413typedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void);
414
415#endif /* GLX_MESA_swap_control */
416
417
418
419/*
420 * #?. GLX_EXT_texture_from_pixmap
421 * XXX not finished?
422 */
423#ifndef GLX_EXT_texture_from_pixmap
424#define GLX_EXT_texture_from_pixmap 1
425
426#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
427#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
428#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
429#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
430#define GLX_Y_INVERTED_EXT 0x20D4
431
432#define GLX_TEXTURE_FORMAT_EXT 0x20D5
433#define GLX_TEXTURE_TARGET_EXT 0x20D6
434#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
435
436#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
437#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
438#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
439
440#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
441#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
442#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
443
444#define GLX_TEXTURE_1D_EXT 0x20DB
445#define GLX_TEXTURE_2D_EXT 0x20DC
446#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
447
448#define GLX_FRONT_LEFT_EXT 0x20DE
449#define GLX_FRONT_RIGHT_EXT 0x20DF
450#define GLX_BACK_LEFT_EXT 0x20E0
451#define GLX_BACK_RIGHT_EXT 0x20E1
452#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT
453#define GLX_BACK_EXT GLX_BACK_LEFT_EXT
454#define GLX_AUX0_EXT 0x20E2
455#define GLX_AUX1_EXT 0x20E3
456#define GLX_AUX2_EXT 0x20E4
457#define GLX_AUX3_EXT 0x20E5
458#define GLX_AUX4_EXT 0x20E6
459#define GLX_AUX5_EXT 0x20E7
460#define GLX_AUX6_EXT 0x20E8
461#define GLX_AUX7_EXT 0x20E9
462#define GLX_AUX8_EXT 0x20EA
463#define GLX_AUX9_EXT 0x20EB
464
465extern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
466extern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer);
467
468#endif /* GLX_EXT_texture_from_pixmap */
469
470
471
472
473/*** Should these go here, or in another header? */
474/*
475** GLX Events
476*/
477typedef struct {
478 int event_type; /* GLX_DAMAGED or GLX_SAVED */
479 int draw_type; /* GLX_WINDOW or GLX_PBUFFER */
480 unsigned long serial; /* # of last request processed by server */
481 Bool send_event; /* true if this came for SendEvent request */
482 Display *display; /* display the event was read from */
483 GLXDrawable drawable; /* XID of Drawable */
484 unsigned int buffer_mask; /* mask indicating which buffers are affected */
485 unsigned int aux_buffer; /* which aux buffer was affected */
486 int x, y;
487 int width, height;
488 int count; /* if nonzero, at least this many more */
489} GLXPbufferClobberEvent;
490
491typedef union __GLXEvent {
492 GLXPbufferClobberEvent glxpbufferclobber;
493 long pad[24];
494} GLXEvent;
495
496#ifdef __cplusplus
497}
498#endif
499
500#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette