Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5564 serge 1
/*
2
 * Mesa 3-D graphics library
3
 *
4
 * Copyright (C) 1999-2006  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
#ifndef GLX_H
27
#define GLX_H
28
 
29
 
30
#include 
31
#include 
32
#include 
33
 
34
 
35
#if defined(USE_MGL_NAMESPACE)
36
#include "glx_mangle.h"
37
#endif
38
 
39
 
40
#ifdef __cplusplus
41
extern "C" {
42
#endif
43
 
44
 
45
#define GLX_VERSION_1_1		1
46
#define GLX_VERSION_1_2		1
47
#define GLX_VERSION_1_3		1
48
#define GLX_VERSION_1_4		1
49
 
50
#define GLX_EXTENSION_NAME   "GLX"
51
 
52
 
53
 
54
/*
55
 * Tokens for glXChooseVisual and glXGetConfig:
56
 */
57
#define GLX_USE_GL		1
58
#define GLX_BUFFER_SIZE		2
59
#define GLX_LEVEL		3
60
#define GLX_RGBA		4
61
#define GLX_DOUBLEBUFFER	5
62
#define GLX_STEREO		6
63
#define GLX_AUX_BUFFERS		7
64
#define GLX_RED_SIZE		8
65
#define GLX_GREEN_SIZE		9
66
#define GLX_BLUE_SIZE		10
67
#define GLX_ALPHA_SIZE		11
68
#define GLX_DEPTH_SIZE		12
69
#define GLX_STENCIL_SIZE	13
70
#define GLX_ACCUM_RED_SIZE	14
71
#define GLX_ACCUM_GREEN_SIZE	15
72
#define GLX_ACCUM_BLUE_SIZE	16
73
#define GLX_ACCUM_ALPHA_SIZE	17
74
 
75
 
76
/*
77
 * Error codes returned by glXGetConfig:
78
 */
79
#define GLX_BAD_SCREEN		1
80
#define GLX_BAD_ATTRIBUTE	2
81
#define GLX_NO_EXTENSION	3
82
#define GLX_BAD_VISUAL		4
83
#define GLX_BAD_CONTEXT		5
84
#define GLX_BAD_VALUE       	6
85
#define GLX_BAD_ENUM		7
86
 
87
 
88
/*
89
 * GLX 1.1 and later:
90
 */
91
#define GLX_VENDOR		1
92
#define GLX_VERSION		2
93
#define GLX_EXTENSIONS 		3
94
 
95
 
96
/*
97
 * GLX 1.3 and later:
98
 */
99
#define GLX_CONFIG_CAVEAT		0x20
100
#define GLX_DONT_CARE			0xFFFFFFFF
101
#define GLX_X_VISUAL_TYPE		0x22
102
#define GLX_TRANSPARENT_TYPE		0x23
103
#define GLX_TRANSPARENT_INDEX_VALUE	0x24
104
#define GLX_TRANSPARENT_RED_VALUE	0x25
105
#define GLX_TRANSPARENT_GREEN_VALUE	0x26
106
#define GLX_TRANSPARENT_BLUE_VALUE	0x27
107
#define GLX_TRANSPARENT_ALPHA_VALUE	0x28
108
#define GLX_WINDOW_BIT			0x00000001
109
#define GLX_PIXMAP_BIT			0x00000002
110
#define GLX_PBUFFER_BIT			0x00000004
111
#define GLX_AUX_BUFFERS_BIT		0x00000010
112
#define GLX_FRONT_LEFT_BUFFER_BIT	0x00000001
113
#define GLX_FRONT_RIGHT_BUFFER_BIT	0x00000002
114
#define GLX_BACK_LEFT_BUFFER_BIT	0x00000004
115
#define GLX_BACK_RIGHT_BUFFER_BIT	0x00000008
116
#define GLX_DEPTH_BUFFER_BIT		0x00000020
117
#define GLX_STENCIL_BUFFER_BIT		0x00000040
118
#define GLX_ACCUM_BUFFER_BIT		0x00000080
119
#define GLX_NONE			0x8000
120
#define GLX_SLOW_CONFIG			0x8001
121
#define GLX_TRUE_COLOR			0x8002
122
#define GLX_DIRECT_COLOR		0x8003
123
#define GLX_PSEUDO_COLOR		0x8004
124
#define GLX_STATIC_COLOR		0x8005
125
#define GLX_GRAY_SCALE			0x8006
126
#define GLX_STATIC_GRAY			0x8007
127
#define GLX_TRANSPARENT_RGB		0x8008
128
#define GLX_TRANSPARENT_INDEX		0x8009
129
#define GLX_VISUAL_ID			0x800B
130
#define GLX_SCREEN			0x800C
131
#define GLX_NON_CONFORMANT_CONFIG	0x800D
132
#define GLX_DRAWABLE_TYPE		0x8010
133
#define GLX_RENDER_TYPE			0x8011
134
#define GLX_X_RENDERABLE		0x8012
135
#define GLX_FBCONFIG_ID			0x8013
136
#define GLX_RGBA_TYPE			0x8014
137
#define GLX_COLOR_INDEX_TYPE		0x8015
138
#define GLX_MAX_PBUFFER_WIDTH		0x8016
139
#define GLX_MAX_PBUFFER_HEIGHT		0x8017
140
#define GLX_MAX_PBUFFER_PIXELS		0x8018
141
#define GLX_PRESERVED_CONTENTS		0x801B
142
#define GLX_LARGEST_PBUFFER		0x801C
143
#define GLX_WIDTH			0x801D
144
#define GLX_HEIGHT			0x801E
145
#define GLX_EVENT_MASK			0x801F
146
#define GLX_DAMAGED			0x8020
147
#define GLX_SAVED			0x8021
148
#define GLX_WINDOW			0x8022
149
#define GLX_PBUFFER			0x8023
150
#define GLX_PBUFFER_HEIGHT              0x8040
151
#define GLX_PBUFFER_WIDTH               0x8041
152
#define GLX_RGBA_BIT			0x00000001
153
#define GLX_COLOR_INDEX_BIT		0x00000002
154
#define GLX_PBUFFER_CLOBBER_MASK	0x08000000
155
 
156
 
157
/*
158
 * GLX 1.4 and later:
159
 */
160
#define GLX_SAMPLE_BUFFERS              0x186a0 /*100000*/
161
#define GLX_SAMPLES                     0x186a1 /*100001*/
162
 
163
 
164
 
165
typedef struct __GLXcontextRec *GLXContext;
166
typedef XID GLXPixmap;
167
typedef XID GLXDrawable;
168
/* GLX 1.3 and later */
169
typedef struct __GLXFBConfigRec *GLXFBConfig;
170
typedef XID GLXFBConfigID;
171
typedef XID GLXContextID;
172
typedef XID GLXWindow;
173
typedef XID GLXPbuffer;
174
 
175
 
176
/*
177
** Events.
178
** __GLX_NUMBER_EVENTS is set to 17 to account for the BufferClobberSGIX
179
**  event - this helps initialization if the server supports the pbuffer
180
**  extension and the client doesn't.
181
*/
182
#define GLX_PbufferClobber	0
183
#define GLX_BufferSwapComplete	1
184
 
185
#define __GLX_NUMBER_EVENTS 17
186
 
187
extern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
188
				     int *attribList );
189
 
190
extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
191
				    GLXContext shareList, Bool direct );
192
 
193
extern void glXDestroyContext( Display *dpy, GLXContext ctx );
194
 
195
extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
196
			    GLXContext ctx);
197
 
198
extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
199
			    unsigned long mask );
200
 
201
extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
202
 
203
extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
204
				     Pixmap pixmap );
205
 
206
extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
207
 
208
extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
209
 
210
extern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
211
 
212
extern Bool glXIsDirect( Display *dpy, GLXContext ctx );
213
 
214
extern int glXGetConfig( Display *dpy, XVisualInfo *visual,
215
			 int attrib, int *value );
216
 
217
extern GLXContext glXGetCurrentContext( void );
218
 
219
extern GLXDrawable glXGetCurrentDrawable( void );
220
 
221
extern void glXWaitGL( void );
222
 
223
extern void glXWaitX( void );
224
 
225
extern void glXUseXFont( Font font, int first, int count, int list );
226
 
227
 
228
 
229
/* GLX 1.1 and later */
230
extern const char *glXQueryExtensionsString( Display *dpy, int screen );
231
 
232
extern const char *glXQueryServerString( Display *dpy, int screen, int name );
233
 
234
extern const char *glXGetClientString( Display *dpy, int name );
235
 
236
 
237
/* GLX 1.2 and later */
238
extern Display *glXGetCurrentDisplay( void );
239
 
240
 
241
/* GLX 1.3 and later */
242
extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
243
                                       const int *attribList, int *nitems );
244
 
245
extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
246
                                 int attribute, int *value );
247
 
248
extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen,
249
                                     int *nelements );
250
 
251
extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
252
                                              GLXFBConfig config );
253
 
254
extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config,
255
                                  Window win, const int *attribList );
256
 
257
extern void glXDestroyWindow( Display *dpy, GLXWindow window );
258
 
259
extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config,
260
                                  Pixmap pixmap, const int *attribList );
261
 
262
extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap );
263
 
264
extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
265
                                    const int *attribList );
266
 
267
extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf );
268
 
269
extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
270
                              unsigned int *value );
271
 
272
extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config,
273
                                       int renderType, GLXContext shareList,
274
                                       Bool direct );
275
 
276
extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
277
                                   GLXDrawable read, GLXContext ctx );
278
 
279
extern GLXDrawable glXGetCurrentReadDrawable( void );
280
 
281
extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute,
282
                            int *value );
283
 
284
extern void glXSelectEvent( Display *dpy, GLXDrawable drawable,
285
                            unsigned long mask );
286
 
287
extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
288
                                 unsigned long *mask );
289
 
290
/* GLX 1.3 function pointer typedefs */
291
typedef GLXFBConfig * (* PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
292
typedef GLXFBConfig * (* PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
293
typedef int (* PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
294
typedef XVisualInfo * (* PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
295
typedef GLXWindow (* PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
296
typedef void (* PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
297
typedef GLXPixmap (* PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
298
typedef void (* PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
299
typedef GLXPbuffer (* PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
300
typedef void (* PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
301
typedef void (* PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
302
typedef GLXContext (* PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
303
typedef Bool (* PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
304
typedef GLXDrawable (* PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
305
typedef Display * (* PFNGLXGETCURRENTDISPLAYPROC) (void);
306
typedef int (* PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
307
typedef void (* PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
308
typedef void (* PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
309
 
310
 
311
/*
312
 * ARB 2. GLX_ARB_get_proc_address
313
 */
314
#ifndef GLX_ARB_get_proc_address
315
#define GLX_ARB_get_proc_address 1
316
 
317
typedef void (*__GLXextFuncPtr)(void);
318
extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
319
 
320
#endif /* GLX_ARB_get_proc_address */
321
 
322
 
323
 
324
/* GLX 1.4 and later */
325
extern void (*glXGetProcAddress(const GLubyte *procname))( void );
326
 
327
/* GLX 1.4 function pointer typedefs */
328
typedef __GLXextFuncPtr (* PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
329
 
330
 
331
#ifndef GLX_GLXEXT_LEGACY
332
 
333
#include 
334
 
335
#endif /* GLX_GLXEXT_LEGACY */
336
 
337
 
338
/**
339
 ** The following aren't in glxext.h yet.
340
 **/
341
 
342
 
343
/*
344
 * ???. GLX_NV_vertex_array_range
345
 */
346
#ifndef GLX_NV_vertex_array_range
347
#define GLX_NV_vertex_array_range
348
 
349
extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
350
extern void glXFreeMemoryNV(GLvoid *pointer);
351
typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
352
typedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer);
353
 
354
#endif /* GLX_NV_vertex_array_range */
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
 
364
extern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
365
extern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
366
extern 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
 
389
extern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage);
390
extern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
391
extern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
392
extern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
393
 
394
typedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage);
395
typedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
396
typedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
397
typedef 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
 
409
extern int glXSwapIntervalMESA(unsigned int interval);
410
extern int glXGetSwapIntervalMESA(void);
411
 
412
typedef int (*PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval);
413
typedef 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
 
465
extern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
466
extern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer);
467
 
468
#endif /* GLX_EXT_texture_from_pixmap */
469
 
470
 
471
#ifndef GLX_MESA_query_renderer
472
#define GLX_MESA_query_renderer 1
473
 
474
#define GLX_RENDERER_VENDOR_ID_MESA                      0x8183
475
#define GLX_RENDERER_DEVICE_ID_MESA                      0x8184
476
#define GLX_RENDERER_VERSION_MESA                        0x8185
477
#define GLX_RENDERER_ACCELERATED_MESA                    0x8186
478
#define GLX_RENDERER_VIDEO_MEMORY_MESA                   0x8187
479
#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA    0x8188
480
#define GLX_RENDERER_PREFERRED_PROFILE_MESA              0x8189
481
#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA    0x818A
482
#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA    0x818B
483
#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA      0x818C
484
#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA     0x818D
485
#define GLX_RENDERER_ID_MESA                             0x818E
486
 
487
Bool glXQueryRendererIntegerMESA(Display *dpy, int screen, int renderer, int attribute, unsigned int *value);
488
Bool glXQueryCurrentRendererIntegerMESA(int attribute, unsigned int *value);
489
const char *glXQueryRendererStringMESA(Display *dpy, int screen, int renderer, int attribute);
490
const char *glXQueryCurrentRendererStringMESA(int attribute);
491
 
492
typedef Bool (*PFNGLXQUERYRENDERERINTEGERMESAPROC) (Display *dpy, int screen, int renderer, int attribute, unsigned int *value);
493
typedef Bool (*PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) (int attribute, unsigned int *value);
494
typedef const char *(*PFNGLXQUERYRENDERERSTRINGMESAPROC) (Display *dpy, int screen, int renderer, int attribute);
495
typedef const char *(*PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) (int attribute);
496
#endif /* GLX_MESA_query_renderer */
497
 
498
/*** Should these go here, or in another header? */
499
/*
500
** GLX Events
501
*/
502
typedef struct {
503
    int event_type;		/* GLX_DAMAGED or GLX_SAVED */
504
    int draw_type;		/* GLX_WINDOW or GLX_PBUFFER */
505
    unsigned long serial;	/* # of last request processed by server */
506
    Bool send_event;		/* true if this came for SendEvent request */
507
    Display *display;		/* display the event was read from */
508
    GLXDrawable drawable;	/* XID of Drawable */
509
    unsigned int buffer_mask;	/* mask indicating which buffers are affected */
510
    unsigned int aux_buffer;	/* which aux buffer was affected */
511
    int x, y;
512
    int width, height;
513
    int count;			/* if nonzero, at least this many more */
514
} GLXPbufferClobberEvent;
515
 
516
typedef struct {
517
    int type;
518
    unsigned long serial;	/* # of last request processed by server */
519
    Bool send_event;		/* true if this came from a SendEvent request */
520
    Display *display;		/* Display the event was read from */
521
    Drawable drawable;	/* drawable on which event was requested in event mask */
522
    int event_type;
523
    int64_t ust;
524
    int64_t msc;
525
    int64_t sbc;
526
} GLXBufferSwapComplete;
527
 
528
typedef union __GLXEvent {
529
    GLXPbufferClobberEvent glxpbufferclobber;
530
    GLXBufferSwapComplete glxbufferswapcomplete;
531
    long pad[24];
532
} GLXEvent;
533
 
534
#ifdef __cplusplus
535
}
536
#endif
537
 
538
#endif