-
Notifications
You must be signed in to change notification settings - Fork 16
/
glx.go
2597 lines (2562 loc) · 115 KB
/
glx.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// Automatically generated OpenGL binding.
//
// Categories in this package:
//
// ARB_create_context: https://www.opengl.org/registry/specs/ARB/create_context.txt
//
// ARB_get_proc_address: https://www.opengl.org/registry/specs/ARB/get_proc_address.txt
//
// EXT_import_context: https://www.opengl.org/registry/specs/EXT/import_context.txt
//
// EXT_swap_control: https://www.opengl.org/registry/specs/EXT/swap_control.txt
//
// EXT_texture_from_pixmap: https://www.opengl.org/registry/specs/EXT/texture_from_pixmap.txt
//
// MESA_agp_offset: https://www.opengl.org/registry/specs/MESA/agp_offset.txt
//
// MESA_copy_sub_buffer: https://www.opengl.org/registry/specs/MESA/copy_sub_buffer.txt
//
// MESA_pixmap_colormap: https://www.opengl.org/registry/specs/MESA/pixmap_colormap.txt
//
// MESA_release_buffers: https://www.opengl.org/registry/specs/MESA/release_buffers.txt
//
// MESA_set_3dfx_mode: https://www.opengl.org/registry/specs/MESA/set_3dfx_mode.txt
//
// NV_copy_image: https://www.opengl.org/registry/specs/NV/copy_image.txt
//
// NV_present_video: https://www.opengl.org/registry/specs/NV/present_video.txt
//
// NV_swap_group: https://www.opengl.org/registry/specs/NV/swap_group.txt
//
// NV_video_capture: https://www.opengl.org/registry/specs/NV/video_capture.txt
//
// NV_video_output: https://www.opengl.org/registry/specs/NV/video_output.txt
//
// OML_sync_control: https://www.opengl.org/registry/specs/OML/sync_control.txt
//
// SGIX_dmbuffer: https://www.opengl.org/registry/specs/SGIX/dmbuffer.txt
//
// SGIX_fbconfig: https://www.opengl.org/registry/specs/SGIX/fbconfig.txt
//
// SGIX_hyperpipe: https://www.opengl.org/registry/specs/SGIX/hyperpipe.txt
//
// SGIX_pbuffer: https://www.opengl.org/registry/specs/SGIX/pbuffer.txt
//
// SGIX_swap_barrier: https://www.opengl.org/registry/specs/SGIX/swap_barrier.txt
//
// SGIX_swap_group: https://www.opengl.org/registry/specs/SGIX/swap_group.txt
//
// SGIX_video_resize: https://www.opengl.org/registry/specs/SGIX/video_resize.txt
//
// SGIX_video_source: https://www.opengl.org/registry/specs/SGIX/video_source.txt
//
// SGI_cushion: https://www.opengl.org/registry/specs/SGI/cushion.txt
//
// SGI_make_current_read: https://www.opengl.org/registry/specs/SGI/make_current_read.txt
//
// SGI_swap_control: https://www.opengl.org/registry/specs/SGI/swap_control.txt
//
// SGI_video_sync: https://www.opengl.org/registry/specs/SGI/video_sync.txt
//
// SUN_get_transparent_index: https://www.opengl.org/registry/specs/SUN/get_transparent_index.txt
//
// VERSION_1_3
//
// VERSION_1_4
//
// glx: https://www.opengl.org/registry/specs/glx/.txt
//
// https://www.opengl.org/sdk/docs/man
//
package glx
// #cgo darwin LDFLAGS: -framework OpenGL
// #cgo linux LDFLAGS: -lGL
// #cgo windows LDFLAGS: -lopengl32
//
// #include <stdlib.h>
// #if defined(__APPLE__)
// #include <dlfcn.h>
// #elif defined(_WIN32)
// #define WIN32_LEAN_AND_MEAN 1
// #include <windows.h>
// #else
// #include <X11/Xlib.h>
// #include <GL/glx.h>
// #endif
//
// #ifndef APIENTRY
// #define APIENTRY
// #endif
// #ifndef APIENTRYP
// #define APIENTRYP APIENTRY *
// #endif
// #ifndef GLAPI
// #define GLAPI extern
// #endif
//
// typedef unsigned int GLenum;
// typedef unsigned char GLboolean;
// typedef unsigned int GLbitfield;
// typedef signed char GLbyte;
// typedef short GLshort;
// typedef int GLint;
// typedef int GLsizei;
// typedef unsigned char GLubyte;
// typedef unsigned short GLushort;
// typedef unsigned int GLuint;
// typedef unsigned short GLhalf;
// typedef float GLfloat;
// typedef float GLclampf;
// typedef double GLdouble;
// typedef double GLclampd;
// typedef void GLvoid;
//
// #ifndef GLX_ARB_get_proc_address
// typedef void (*__GLXextFuncPtr)(void);
// #endif
//
// #ifndef GLX_SGIX_video_source
// typedef XID GLXVideoSourceSGIX;
// #endif
//
// #ifndef GLX_SGIX_fbconfig
// typedef XID GLXFBConfigIDSGIX;
// typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
// #endif
//
// #ifndef GLX_SGIX_pbuffer
// typedef XID GLXPbufferSGIX;
// typedef struct {
// int type;
// unsigned long serial; /* # of last request processed by server */
// Bool send_event; /* true if this came for SendEvent request */
// Display *display; /* display the event was read from */
// GLXDrawable drawable; /* i.d. of Drawable */
// int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */
// int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */
// unsigned int mask; /* mask indicating which buffers are affected*/
// int x, y;
// int width, height;
// int count; /* if nonzero, at least this many more */
// } GLXBufferClobberEventSGIX;
// #endif
//
// #ifndef GLX_NV_video_output
// typedef unsigned int GLXVideoDeviceNV;
// #endif
//
// #ifndef GLX_NV_video_capture
// typedef XID GLXVideoCaptureDeviceNV;
// #endif
//
// #ifndef GLEXT_64_TYPES_DEFINED
// /* This code block is duplicated in glext.h, so must be protected */
// #define GLEXT_64_TYPES_DEFINED
// /* Define int32_t, int64_t, and uint64_t types for UST/MSC */
// /* (as used in the GLX_OML_sync_control extension). */
// #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
// #include <inttypes.h>
// #elif defined(__sun__) || defined(__digital__)
// #include <inttypes.h>
// #if defined(__STDC__)
// #if defined(__arch64__) || defined(_LP64)
// typedef long int int64_t;
// typedef unsigned long int uint64_t;
// #else
// typedef long long int int64_t;
// typedef unsigned long long int uint64_t;
// #endif /* __arch64__ */
// #endif /* __STDC__ */
// #elif defined( __VMS ) || defined(__sgi)
// #include <inttypes.h>
// #elif defined(__SCO__) || defined(__USLC__)
// #include <stdint.h>
// #elif defined(__UNIXOS2__) || defined(__SOL64__)
// typedef long int int32_t;
// typedef long long int int64_t;
// typedef unsigned long long int uint64_t;
// #elif defined(_WIN32) && defined(__GNUC__)
// #include <stdint.h>
// #elif defined(_WIN32)
// typedef __int32 int32_t;
// typedef __int64 int64_t;
// typedef unsigned __int64 uint64_t;
// #else
// #include <inttypes.h> /* Fallback option */
// #endif
// #endif
//
// #ifdef _WIN32
// static HMODULE opengl32 = NULL;
// #endif
//
// static void* goglxGetProcAddress(const char* name) {
// #ifdef __APPLE__
// return dlsym(RTLD_DEFAULT, name);
// #elif _WIN32
// void* pf = wglGetProcAddress((LPCSTR)name);
// if(pf) {
// return pf;
// }
// if(opengl32 == NULL) {
// opengl32 = LoadLibraryA("opengl32.dll");
// }
// return GetProcAddress(opengl32, (LPCSTR)name);
// #else
// return glXGetProcAddress((const GLubyte*)name);
// #endif
// }
//
// // ARB_create_context
// GLXContext (APIENTRYP ptrglxCreateContextAttribsARB)(Display* dpy, GLXFBConfig config, GLXContext share_context, Bool direct, int* attrib_list);
// // ARB_get_proc_address
// __GLXextFuncPtr (APIENTRYP ptrglxGetProcAddressARB)(GLubyte* procName);
// // EXT_import_context
// Display * (APIENTRYP ptrglxGetCurrentDisplayEXT)();
// int (APIENTRYP ptrglxQueryContextInfoEXT)(Display* dpy, GLXContext context, int attribute, int* value);
// GLXContextID (APIENTRYP ptrglxGetContextIDEXT)(const GLXContext context);
// GLXContext (APIENTRYP ptrglxImportContextEXT)(Display* dpy, GLXContextID contextID);
// void (APIENTRYP ptrglxFreeContextEXT)(Display* dpy, GLXContext context);
// // EXT_swap_control
// void (APIENTRYP ptrglxSwapIntervalEXT)(Display* dpy, GLXDrawable drawable, int interval);
// // EXT_texture_from_pixmap
// void (APIENTRYP ptrglxBindTexImageEXT)(Display* dpy, GLXDrawable drawable, int buffer, int* attrib_list);
// void (APIENTRYP ptrglxReleaseTexImageEXT)(Display* dpy, GLXDrawable drawable, int buffer);
// // MESA_agp_offset
// unsigned int (APIENTRYP ptrglxGetAGPOffsetMESA)(void* pointer);
// // MESA_copy_sub_buffer
// void (APIENTRYP ptrglxCopySubBufferMESA)(Display* dpy, GLXDrawable drawable, int x, int y, int width, int height);
// // MESA_pixmap_colormap
// GLXPixmap (APIENTRYP ptrglxCreateGLXPixmapMESA)(Display* dpy, XVisualInfo* visual, Pixmap pixmap, Colormap cmap);
// // MESA_release_buffers
// Bool (APIENTRYP ptrglxReleaseBuffersMESA)(Display* dpy, GLXDrawable drawable);
// // MESA_set_3dfx_mode
// Bool (APIENTRYP ptrglxSet3DfxModeMESA)(int mode);
// // NV_copy_image
// void (APIENTRYP ptrglxCopyImageSubDataNV)(Display* dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
// // NV_present_video
// unsigned int * (APIENTRYP ptrglxEnumerateVideoDevicesNV)(Display* dpy, int screen, int* nelements);
// int (APIENTRYP ptrglxBindVideoDeviceNV)(Display* dpy, unsigned int video_slot, unsigned int video_device, int* attrib_list);
// // NV_swap_group
// Bool (APIENTRYP ptrglxJoinSwapGroupNV)(Display* dpy, GLXDrawable drawable, GLuint group);
// Bool (APIENTRYP ptrglxBindSwapBarrierNV)(Display* dpy, GLuint group, GLuint barrier);
// Bool (APIENTRYP ptrglxQuerySwapGroupNV)(Display* dpy, GLXDrawable drawable, GLuint* group, GLuint* barrier);
// Bool (APIENTRYP ptrglxQueryMaxSwapGroupsNV)(Display* dpy, int screen, GLuint* maxGroups, GLuint* maxBarriers);
// Bool (APIENTRYP ptrglxQueryFrameCountNV)(Display* dpy, int screen, GLuint* count);
// Bool (APIENTRYP ptrglxResetFrameCountNV)(Display* dpy, int screen);
// // NV_video_capture
// int (APIENTRYP ptrglxBindVideoCaptureDeviceNV)(Display* dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device);
// GLXVideoCaptureDeviceNV * (APIENTRYP ptrglxEnumerateVideoCaptureDevicesNV)(Display* dpy, int screen, int* nelements);
// void (APIENTRYP ptrglxLockVideoCaptureDeviceNV)(Display* dpy, GLXVideoCaptureDeviceNV device);
// int (APIENTRYP ptrglxQueryVideoCaptureDeviceNV)(Display* dpy, GLXVideoCaptureDeviceNV device, int attribute, int* value);
// void (APIENTRYP ptrglxReleaseVideoCaptureDeviceNV)(Display* dpy, GLXVideoCaptureDeviceNV device);
// // NV_video_output
// int (APIENTRYP ptrglxGetVideoDeviceNV)(Display* dpy, int screen, int numVideoDevices, GLXVideoDeviceNV* pVideoDevice);
// int (APIENTRYP ptrglxReleaseVideoDeviceNV)(Display* dpy, int screen, GLXVideoDeviceNV VideoDevice);
// int (APIENTRYP ptrglxBindVideoImageNV)(Display* dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer);
// int (APIENTRYP ptrglxReleaseVideoImageNV)(Display* dpy, GLXPbuffer pbuf);
// int (APIENTRYP ptrglxSendPbufferToVideoNV)(Display* dpy, GLXPbuffer pbuf, int iBufferType, unsigned long* pulCounterPbuffer, GLboolean bBlock);
// int (APIENTRYP ptrglxGetVideoInfoNV)(Display* dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long* pulCounterOutputVideo);
// // OML_sync_control
// Bool (APIENTRYP ptrglxGetSyncValuesOML)(Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc);
// Bool (APIENTRYP ptrglxGetMscRateOML)(Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator);
// int64_t (APIENTRYP ptrglxSwapBuffersMscOML)(Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
// Bool (APIENTRYP ptrglxWaitForMscOML)(Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t* ust, int64_t* msc, int64_t* sbc);
// Bool (APIENTRYP ptrglxWaitForSbcOML)(Display* dpy, GLXDrawable drawable, int64_t target_sbc, int64_t* ust, int64_t* msc, int64_t* sbc);
// // SGIX_dmbuffer
// Bool (APIENTRYP ptrglxAssociateDMPbufferSGIX)(Display* dpy, GLXPbufferSGIX pbuffer, DMparams* params, DMbuffer dmbuffer);
// // SGIX_fbconfig
// int (APIENTRYP ptrglxGetFBConfigAttribSGIX)(Display* dpy, GLXFBConfigSGIX config, int attribute, int* value);
// GLXFBConfigSGIX * (APIENTRYP ptrglxChooseFBConfigSGIX)(Display* dpy, int screen, int* attrib_list, int* nelements);
// GLXPixmap (APIENTRYP ptrglxCreateGLXPixmapWithConfigSGIX)(Display* dpy, GLXFBConfigSGIX config, Pixmap pixmap);
// GLXContext (APIENTRYP ptrglxCreateContextWithConfigSGIX)(Display* dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
// XVisualInfo * (APIENTRYP ptrglxGetVisualFromFBConfigSGIX)(Display* dpy, GLXFBConfigSGIX config);
// GLXFBConfigSGIX (APIENTRYP ptrglxGetFBConfigFromVisualSGIX)(Display* dpy, XVisualInfo* vis);
// // SGIX_hyperpipe
// GLXHyperpipeNetworkSGIX * (APIENTRYP ptrglxQueryHyperpipeNetworkSGIX)(Display* dpy, int* npipes);
// int (APIENTRYP ptrglxHyperpipeConfigSGIX)(Display* dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX* cfg, int* hpId);
// GLXHyperpipeConfigSGIX * (APIENTRYP ptrglxQueryHyperpipeConfigSGIX)(Display* dpy, int hpId, int* npipes);
// int (APIENTRYP ptrglxDestroyHyperpipeConfigSGIX)(Display* dpy, int hpId);
// int (APIENTRYP ptrglxBindHyperpipeSGIX)(Display* dpy, int hpId);
// int (APIENTRYP ptrglxQueryHyperpipeBestAttribSGIX)(Display* dpy, int timeSlice, int attrib, int size, void* attribList, void* returnAttribList);
// int (APIENTRYP ptrglxHyperpipeAttribSGIX)(Display* dpy, int timeSlice, int attrib, int size, void* attribList);
// int (APIENTRYP ptrglxQueryHyperpipeAttribSGIX)(Display* dpy, int timeSlice, int attrib, int size, void* returnAttribList);
// // SGIX_pbuffer
// GLXPbufferSGIX (APIENTRYP ptrglxCreateGLXPbufferSGIX)(Display* dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int* attrib_list);
// void (APIENTRYP ptrglxDestroyGLXPbufferSGIX)(Display* dpy, GLXPbufferSGIX pbuf);
// int (APIENTRYP ptrglxQueryGLXPbufferSGIX)(Display* dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int* value);
// void (APIENTRYP ptrglxSelectEventSGIX)(Display* dpy, GLXDrawable drawable, unsigned long mask);
// void (APIENTRYP ptrglxGetSelectedEventSGIX)(Display* dpy, GLXDrawable drawable, unsigned long* mask);
// // SGIX_swap_barrier
// void (APIENTRYP ptrglxBindSwapBarrierSGIX)(Display* dpy, GLXDrawable drawable, int barrier);
// Bool (APIENTRYP ptrglxQueryMaxSwapBarriersSGIX)(Display* dpy, int screen, int* max);
// // SGIX_swap_group
// void (APIENTRYP ptrglxJoinSwapGroupSGIX)(Display* dpy, GLXDrawable drawable, GLXDrawable member);
// // SGIX_video_resize
// int (APIENTRYP ptrglxBindChannelToWindowSGIX)(Display* display, int screen, int channel, Window window);
// int (APIENTRYP ptrglxChannelRectSGIX)(Display* display, int screen, int channel, int x, int y, int w, int h);
// int (APIENTRYP ptrglxQueryChannelRectSGIX)(Display* display, int screen, int channel, int* dx, int* dy, int* dw, int* dh);
// int (APIENTRYP ptrglxQueryChannelDeltasSGIX)(Display* display, int screen, int channel, int* x, int* y, int* w, int* h);
// int (APIENTRYP ptrglxChannelRectSyncSGIX)(Display* display, int screen, int channel, GLenum synctype);
// // SGIX_video_source
// GLXVideoSourceSGIX (APIENTRYP ptrglxCreateGLXVideoSourceSGIX)(Display* display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode);
// void (APIENTRYP ptrglxDestroyGLXVideoSourceSGIX)(Display* dpy, GLXVideoSourceSGIX glxvideosource);
// // SGI_cushion
// void (APIENTRYP ptrglxCushionSGI)(Display* dpy, Window window, float cushion);
// // SGI_make_current_read
// Bool (APIENTRYP ptrglxMakeCurrentReadSGI)(Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
// GLXDrawable (APIENTRYP ptrglxGetCurrentReadDrawableSGI)();
// // SGI_swap_control
// int (APIENTRYP ptrglxSwapIntervalSGI)(int interval);
// // SGI_video_sync
// int (APIENTRYP ptrglxGetVideoSyncSGI)(unsigned int* count);
// int (APIENTRYP ptrglxWaitVideoSyncSGI)(int divisor, int remainder, unsigned int* count);
// // SUN_get_transparent_index
// Status (APIENTRYP ptrglxGetTransparentIndexSUN)(Display* dpy, Window overlay, Window underlay, long* pTransparentIndex);
// // VERSION_1_3
// GLXFBConfig * (APIENTRYP ptrglxGetFBConfigs)(Display* dpy, int screen, int* nelements);
// GLXFBConfig * (APIENTRYP ptrglxChooseFBConfig)(Display* dpy, int screen, int* attrib_list, int* nelements);
// int (APIENTRYP ptrglxGetFBConfigAttrib)(Display* dpy, GLXFBConfig config, int attribute, int* value);
// XVisualInfo * (APIENTRYP ptrglxGetVisualFromFBConfig)(Display* dpy, GLXFBConfig config);
// GLXWindow (APIENTRYP ptrglxCreateWindow)(Display* dpy, GLXFBConfig config, Window win, int* attrib_list);
// void (APIENTRYP ptrglxDestroyWindow)(Display* dpy, GLXWindow win);
// GLXPixmap (APIENTRYP ptrglxCreatePixmap)(Display* dpy, GLXFBConfig config, Pixmap pixmap, int* attrib_list);
// void (APIENTRYP ptrglxDestroyPixmap)(Display* dpy, GLXPixmap pixmap);
// GLXPbuffer (APIENTRYP ptrglxCreatePbuffer)(Display* dpy, GLXFBConfig config, int* attrib_list);
// void (APIENTRYP ptrglxDestroyPbuffer)(Display* dpy, GLXPbuffer pbuf);
// void (APIENTRYP ptrglxQueryDrawable)(Display* dpy, GLXDrawable draw, int attribute, unsigned int* value);
// GLXContext (APIENTRYP ptrglxCreateNewContext)(Display* dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
// Bool (APIENTRYP ptrglxMakeContextCurrent)(Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
// GLXDrawable (APIENTRYP ptrglxGetCurrentReadDrawable)();
// Display * (APIENTRYP ptrglxGetCurrentDisplay)();
// int (APIENTRYP ptrglxQueryContext)(Display* dpy, GLXContext ctx, int attribute, int* value);
// void (APIENTRYP ptrglxSelectEvent)(Display* dpy, GLXDrawable draw, unsigned long event_mask);
// void (APIENTRYP ptrglxGetSelectedEvent)(Display* dpy, GLXDrawable draw, unsigned long* event_mask);
// // VERSION_1_4
// __GLXextFuncPtr (APIENTRYP ptrglxGetProcAddress)(GLubyte* procName);
// // glx
// void (APIENTRYP ptrglxRender)();
// void (APIENTRYP ptrglxRenderLarge)();
// void (APIENTRYP ptrglxCreateContext)(GLint gc_id, GLint screen, GLint visual, GLint share_list);
// void (APIENTRYP ptrglxDestroyContext)(GLint context);
// void (APIENTRYP ptrglxMakeCurrent)(GLint drawable, GLint context);
// void (APIENTRYP ptrglxIsDirect)(GLint dpy, GLint context);
// void (APIENTRYP ptrglxQueryVersion)(GLint* major, GLint* minor);
// void (APIENTRYP ptrglxWaitGL)(GLint context);
// void (APIENTRYP ptrglxWaitX)();
// void (APIENTRYP ptrglxCopyContext)(GLint source, GLint dest, GLint mask);
// void (APIENTRYP ptrglxSwapBuffers)(GLint drawable);
// void (APIENTRYP ptrglxUseXFont)(GLint font, GLint first, GLint count, GLint list_base);
// void (APIENTRYP ptrglxCreateGLXPixmap)(GLint visual, GLint pixmap, GLint glxpixmap);
// void (APIENTRYP ptrglxGetVisualConfigs)();
// void (APIENTRYP ptrglxDestroyGLXPixmap)(GLint pixmap);
// void (APIENTRYP ptrglxVendorPrivate)();
// void (APIENTRYP ptrglxVendorPrivateWithReply)();
// void (APIENTRYP ptrglxQueryExtensionsString)(GLint screen);
// void (APIENTRYP ptrglxQueryServerString)(GLint screen, GLint name);
// void (APIENTRYP ptrglxClientInfo)();
// void (APIENTRYP ptrglxGetFBConfigs)();
// void (APIENTRYP ptrglxCreatePixmap)(GLint config, GLint pixmap, GLint glxpixmap);
// void (APIENTRYP ptrglxDestroyPixmap)(GLint glxpixmap);
// void (APIENTRYP ptrglxCreateNewContext)(GLint config, GLint render_type, GLint share_list, GLint direct);
// void (APIENTRYP ptrglxQueryContext)();
// void (APIENTRYP ptrglxMakeContextCurrent)(GLint drawable, GLint readdrawable, GLint context);
// void (APIENTRYP ptrglxCreatePbuffer)(GLint config, GLint pbuffer);
// void (APIENTRYP ptrglxDestroyPbuffer)(GLint pbuffer);
// void (APIENTRYP ptrglxGetDrawableAttributes)(GLint drawable);
// void (APIENTRYP ptrglxChangeDrawableAttributes)(GLint drawable);
// void (APIENTRYP ptrglxCreateWindow)(GLint config, GLint window, GLint glxwindow);
// void (APIENTRYP ptrglxDestroyWindow)(GLint glxwindow);
// void (APIENTRYP ptrglxSwapIntervalSGI)();
// void (APIENTRYP ptrglxMakeCurrentReadSGI)(GLint drawable, GLint readdrawable, GLint context);
// void (APIENTRYP ptrglxCreateGLXVideoSourceSGIX)(GLint dpy, GLint screen, GLint server, GLint path, GLint class, GLint node);
// void (APIENTRYP ptrglxDestroyGLXVideoSourceSGIX)(GLint dpy, GLint glxvideosource);
// void (APIENTRYP ptrglxQueryContextInfoEXT)();
// void (APIENTRYP ptrglxGetFBConfigsSGIX)();
// void (APIENTRYP ptrglxCreateContextWithConfigSGIX)(GLint gc_id, GLint screen, GLint config, GLint share_list);
// void (APIENTRYP ptrglxCreateGLXPixmapWithConfigSGIX)(GLint config, GLint pixmap, GLint glxpixmap);
// void (APIENTRYP ptrglxCreateGLXPbufferSGIX)(GLint config, GLint pbuffer);
// void (APIENTRYP ptrglxDestroyGLXPbufferSGIX)(GLint pbuffer);
// void (APIENTRYP ptrglxChangeDrawableAttributesSGIX)(GLint drawable);
// void (APIENTRYP ptrglxGetDrawableAttributesSGIX)(GLint drawable);
// void (APIENTRYP ptrglxJoinSwapGroupSGIX)(GLint window, GLint group);
// void (APIENTRYP ptrglxBindSwapBarrierSGIX)(GLint window, GLint barrier);
// void (APIENTRYP ptrglxQueryMaxSwapBarriersSGIX)();
// GLXHyperpipeNetworkSGIX * (APIENTRYP ptrglxQueryHyperpipeNetworkSGIX)(Display* dpy, int* npipes);
// int (APIENTRYP ptrglxHyperpipeConfigSGIX)(Display* dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX* cfg, int* hpId);
// GLXHyperpipeConfigSGIX * (APIENTRYP ptrglxQueryHyperpipeConfigSGIX)(Display* dpy, int hpId, int* npipes);
// int (APIENTRYP ptrglxDestroyHyperpipeConfigSGIX)(Display* dpy, int hpId);
// int (APIENTRYP ptrglxBindHyperpipeSGIX)(Display* dpy, int hpId);
// int (APIENTRYP ptrglxQueryHyperpipeBestAttribSGIX)(Display* dpy, int timeSlice, int attrib, int size, GLvoid* attribList, GLvoid* returnAttribList);
// int (APIENTRYP ptrglxHyperpipeAttribSGIX)(Display* dpy, int timeSlice, int attrib, int size, void* attribList);
// int (APIENTRYP ptrglxQueryHyperpipeAttribSGIX)(Display* dpy, int timeSlice, int attrib, int size, void* returnAttribList);
//
// // ARB_create_context
// GLXContext goglxCreateContextAttribsARB(Display* dpy, GLXFBConfig config, GLXContext share_context, Bool direct, int* attrib_list) {
// return (*ptrglxCreateContextAttribsARB)(dpy, config, share_context, direct, attrib_list);
// }
// // ARB_get_proc_address
// __GLXextFuncPtr goglxGetProcAddressARB(GLubyte* procName) {
// return (*ptrglxGetProcAddressARB)(procName);
// }
// // EXT_import_context
// Display * goglxGetCurrentDisplayEXT() {
// return (*ptrglxGetCurrentDisplayEXT)();
// }
// int goglxQueryContextInfoEXT(Display* dpy, GLXContext context, int attribute, int* value) {
// return (*ptrglxQueryContextInfoEXT)(dpy, context, attribute, value);
// }
// GLXContextID goglxGetContextIDEXT(const GLXContext context) {
// return (*ptrglxGetContextIDEXT)(context);
// }
// GLXContext goglxImportContextEXT(Display* dpy, GLXContextID contextID) {
// return (*ptrglxImportContextEXT)(dpy, contextID);
// }
// void goglxFreeContextEXT(Display* dpy, GLXContext context) {
// (*ptrglxFreeContextEXT)(dpy, context);
// }
// // EXT_swap_control
// void goglxSwapIntervalEXT(Display* dpy, GLXDrawable drawable, int interval) {
// (*ptrglxSwapIntervalEXT)(dpy, drawable, interval);
// }
// // EXT_texture_from_pixmap
// void goglxBindTexImageEXT(Display* dpy, GLXDrawable drawable, int buffer, int* attrib_list) {
// (*ptrglxBindTexImageEXT)(dpy, drawable, buffer, attrib_list);
// }
// void goglxReleaseTexImageEXT(Display* dpy, GLXDrawable drawable, int buffer) {
// (*ptrglxReleaseTexImageEXT)(dpy, drawable, buffer);
// }
// // MESA_agp_offset
// unsigned int goglxGetAGPOffsetMESA(void* pointer) {
// return (*ptrglxGetAGPOffsetMESA)(pointer);
// }
// // MESA_copy_sub_buffer
// void goglxCopySubBufferMESA(Display* dpy, GLXDrawable drawable, int x, int y, int width, int height) {
// (*ptrglxCopySubBufferMESA)(dpy, drawable, x, y, width, height);
// }
// // MESA_pixmap_colormap
// GLXPixmap goglxCreateGLXPixmapMESA(Display* dpy, XVisualInfo* visual, Pixmap pixmap, Colormap cmap) {
// return (*ptrglxCreateGLXPixmapMESA)(dpy, visual, pixmap, cmap);
// }
// // MESA_release_buffers
// Bool goglxReleaseBuffersMESA(Display* dpy, GLXDrawable drawable) {
// return (*ptrglxReleaseBuffersMESA)(dpy, drawable);
// }
// // MESA_set_3dfx_mode
// Bool goglxSet3DfxModeMESA(int mode) {
// return (*ptrglxSet3DfxModeMESA)(mode);
// }
// // NV_copy_image
// void goglxCopyImageSubDataNV(Display* dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth) {
// (*ptrglxCopyImageSubDataNV)(dpy, srcCtx, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstCtx, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth);
// }
// // NV_present_video
// unsigned int * goglxEnumerateVideoDevicesNV(Display* dpy, int screen, int* nelements) {
// return (*ptrglxEnumerateVideoDevicesNV)(dpy, screen, nelements);
// }
// int goglxBindVideoDeviceNV(Display* dpy, unsigned int video_slot, unsigned int video_device, int* attrib_list) {
// return (*ptrglxBindVideoDeviceNV)(dpy, video_slot, video_device, attrib_list);
// }
// // NV_swap_group
// Bool goglxJoinSwapGroupNV(Display* dpy, GLXDrawable drawable, GLuint group) {
// return (*ptrglxJoinSwapGroupNV)(dpy, drawable, group);
// }
// Bool goglxBindSwapBarrierNV(Display* dpy, GLuint group, GLuint barrier) {
// return (*ptrglxBindSwapBarrierNV)(dpy, group, barrier);
// }
// Bool goglxQuerySwapGroupNV(Display* dpy, GLXDrawable drawable, GLuint* group, GLuint* barrier) {
// return (*ptrglxQuerySwapGroupNV)(dpy, drawable, group, barrier);
// }
// Bool goglxQueryMaxSwapGroupsNV(Display* dpy, int screen, GLuint* maxGroups, GLuint* maxBarriers) {
// return (*ptrglxQueryMaxSwapGroupsNV)(dpy, screen, maxGroups, maxBarriers);
// }
// Bool goglxQueryFrameCountNV(Display* dpy, int screen, GLuint* count) {
// return (*ptrglxQueryFrameCountNV)(dpy, screen, count);
// }
// Bool goglxResetFrameCountNV(Display* dpy, int screen) {
// return (*ptrglxResetFrameCountNV)(dpy, screen);
// }
// // NV_video_capture
// int goglxBindVideoCaptureDeviceNV(Display* dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device) {
// return (*ptrglxBindVideoCaptureDeviceNV)(dpy, video_capture_slot, device);
// }
// GLXVideoCaptureDeviceNV * goglxEnumerateVideoCaptureDevicesNV(Display* dpy, int screen, int* nelements) {
// return (*ptrglxEnumerateVideoCaptureDevicesNV)(dpy, screen, nelements);
// }
// void goglxLockVideoCaptureDeviceNV(Display* dpy, GLXVideoCaptureDeviceNV device) {
// (*ptrglxLockVideoCaptureDeviceNV)(dpy, device);
// }
// int goglxQueryVideoCaptureDeviceNV(Display* dpy, GLXVideoCaptureDeviceNV device, int attribute, int* value) {
// return (*ptrglxQueryVideoCaptureDeviceNV)(dpy, device, attribute, value);
// }
// void goglxReleaseVideoCaptureDeviceNV(Display* dpy, GLXVideoCaptureDeviceNV device) {
// (*ptrglxReleaseVideoCaptureDeviceNV)(dpy, device);
// }
// // NV_video_output
// int goglxGetVideoDeviceNV(Display* dpy, int screen, int numVideoDevices, GLXVideoDeviceNV* pVideoDevice) {
// return (*ptrglxGetVideoDeviceNV)(dpy, screen, numVideoDevices, pVideoDevice);
// }
// int goglxReleaseVideoDeviceNV(Display* dpy, int screen, GLXVideoDeviceNV VideoDevice) {
// return (*ptrglxReleaseVideoDeviceNV)(dpy, screen, VideoDevice);
// }
// int goglxBindVideoImageNV(Display* dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer) {
// return (*ptrglxBindVideoImageNV)(dpy, VideoDevice, pbuf, iVideoBuffer);
// }
// int goglxReleaseVideoImageNV(Display* dpy, GLXPbuffer pbuf) {
// return (*ptrglxReleaseVideoImageNV)(dpy, pbuf);
// }
// int goglxSendPbufferToVideoNV(Display* dpy, GLXPbuffer pbuf, int iBufferType, unsigned long* pulCounterPbuffer, GLboolean bBlock) {
// return (*ptrglxSendPbufferToVideoNV)(dpy, pbuf, iBufferType, pulCounterPbuffer, bBlock);
// }
// int goglxGetVideoInfoNV(Display* dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long* pulCounterOutputPbuffer, unsigned long* pulCounterOutputVideo) {
// return (*ptrglxGetVideoInfoNV)(dpy, screen, VideoDevice, pulCounterOutputPbuffer, pulCounterOutputVideo);
// }
// // OML_sync_control
// Bool goglxGetSyncValuesOML(Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc) {
// return (*ptrglxGetSyncValuesOML)(dpy, drawable, ust, msc, sbc);
// }
// Bool goglxGetMscRateOML(Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator) {
// return (*ptrglxGetMscRateOML)(dpy, drawable, numerator, denominator);
// }
// int64_t goglxSwapBuffersMscOML(Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder) {
// return (*ptrglxSwapBuffersMscOML)(dpy, drawable, target_msc, divisor, remainder);
// }
// Bool goglxWaitForMscOML(Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t* ust, int64_t* msc, int64_t* sbc) {
// return (*ptrglxWaitForMscOML)(dpy, drawable, target_msc, divisor, remainder, ust, msc, sbc);
// }
// Bool goglxWaitForSbcOML(Display* dpy, GLXDrawable drawable, int64_t target_sbc, int64_t* ust, int64_t* msc, int64_t* sbc) {
// return (*ptrglxWaitForSbcOML)(dpy, drawable, target_sbc, ust, msc, sbc);
// }
// // SGIX_dmbuffer
// Bool goglxAssociateDMPbufferSGIX(Display* dpy, GLXPbufferSGIX pbuffer, DMparams* params, DMbuffer dmbuffer) {
// return (*ptrglxAssociateDMPbufferSGIX)(dpy, pbuffer, params, dmbuffer);
// }
// // SGIX_fbconfig
// int goglxGetFBConfigAttribSGIX(Display* dpy, GLXFBConfigSGIX config, int attribute, int* value) {
// return (*ptrglxGetFBConfigAttribSGIX)(dpy, config, attribute, value);
// }
// GLXFBConfigSGIX * goglxChooseFBConfigSGIX(Display* dpy, int screen, int* attrib_list, int* nelements) {
// return (*ptrglxChooseFBConfigSGIX)(dpy, screen, attrib_list, nelements);
// }
// GLXPixmap goglxCreateGLXPixmapWithConfigSGIX(Display* dpy, GLXFBConfigSGIX config, Pixmap pixmap) {
// return (*ptrglxCreateGLXPixmapWithConfigSGIX)(dpy, config, pixmap);
// }
// GLXContext goglxCreateContextWithConfigSGIX(Display* dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct) {
// return (*ptrglxCreateContextWithConfigSGIX)(dpy, config, render_type, share_list, direct);
// }
// XVisualInfo * goglxGetVisualFromFBConfigSGIX(Display* dpy, GLXFBConfigSGIX config) {
// return (*ptrglxGetVisualFromFBConfigSGIX)(dpy, config);
// }
// GLXFBConfigSGIX goglxGetFBConfigFromVisualSGIX(Display* dpy, XVisualInfo* vis) {
// return (*ptrglxGetFBConfigFromVisualSGIX)(dpy, vis);
// }
// // SGIX_hyperpipe
// GLXHyperpipeNetworkSGIX * goglxQueryHyperpipeNetworkSGIX(Display* dpy, int* npipes) {
// return (*ptrglxQueryHyperpipeNetworkSGIX)(dpy, npipes);
// }
// int goglxHyperpipeConfigSGIX(Display* dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX* cfg, int* hpId) {
// return (*ptrglxHyperpipeConfigSGIX)(dpy, networkId, npipes, cfg, hpId);
// }
// GLXHyperpipeConfigSGIX * goglxQueryHyperpipeConfigSGIX(Display* dpy, int hpId, int* npipes) {
// return (*ptrglxQueryHyperpipeConfigSGIX)(dpy, hpId, npipes);
// }
// int goglxDestroyHyperpipeConfigSGIX(Display* dpy, int hpId) {
// return (*ptrglxDestroyHyperpipeConfigSGIX)(dpy, hpId);
// }
// int goglxBindHyperpipeSGIX(Display* dpy, int hpId) {
// return (*ptrglxBindHyperpipeSGIX)(dpy, hpId);
// }
// int goglxQueryHyperpipeBestAttribSGIX(Display* dpy, int timeSlice, int attrib, int size, void* attribList, void* returnAttribList) {
// return (*ptrglxQueryHyperpipeBestAttribSGIX)(dpy, timeSlice, attrib, size, attribList, returnAttribList);
// }
// int goglxHyperpipeAttribSGIX(Display* dpy, int timeSlice, int attrib, int size, void* attribList) {
// return (*ptrglxHyperpipeAttribSGIX)(dpy, timeSlice, attrib, size, attribList);
// }
// int goglxQueryHyperpipeAttribSGIX(Display* dpy, int timeSlice, int attrib, int size, void* returnAttribList) {
// return (*ptrglxQueryHyperpipeAttribSGIX)(dpy, timeSlice, attrib, size, returnAttribList);
// }
// // SGIX_pbuffer
// GLXPbufferSGIX goglxCreateGLXPbufferSGIX(Display* dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int* attrib_list) {
// return (*ptrglxCreateGLXPbufferSGIX)(dpy, config, width, height, attrib_list);
// }
// void goglxDestroyGLXPbufferSGIX(Display* dpy, GLXPbufferSGIX pbuf) {
// (*ptrglxDestroyGLXPbufferSGIX)(dpy, pbuf);
// }
// int goglxQueryGLXPbufferSGIX(Display* dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int* value) {
// return (*ptrglxQueryGLXPbufferSGIX)(dpy, pbuf, attribute, value);
// }
// void goglxSelectEventSGIX(Display* dpy, GLXDrawable drawable, unsigned long mask) {
// (*ptrglxSelectEventSGIX)(dpy, drawable, mask);
// }
// void goglxGetSelectedEventSGIX(Display* dpy, GLXDrawable drawable, unsigned long* mask) {
// (*ptrglxGetSelectedEventSGIX)(dpy, drawable, mask);
// }
// // SGIX_swap_barrier
// void goglxBindSwapBarrierSGIX(Display* dpy, GLXDrawable drawable, int barrier) {
// (*ptrglxBindSwapBarrierSGIX)(dpy, drawable, barrier);
// }
// Bool goglxQueryMaxSwapBarriersSGIX(Display* dpy, int screen, int* max) {
// return (*ptrglxQueryMaxSwapBarriersSGIX)(dpy, screen, max);
// }
// // SGIX_swap_group
// void goglxJoinSwapGroupSGIX(Display* dpy, GLXDrawable drawable, GLXDrawable member) {
// (*ptrglxJoinSwapGroupSGIX)(dpy, drawable, member);
// }
// // SGIX_video_resize
// int goglxBindChannelToWindowSGIX(Display* display, int screen, int channel, Window window) {
// return (*ptrglxBindChannelToWindowSGIX)(display, screen, channel, window);
// }
// int goglxChannelRectSGIX(Display* display, int screen, int channel, int x, int y, int w, int h) {
// return (*ptrglxChannelRectSGIX)(display, screen, channel, x, y, w, h);
// }
// int goglxQueryChannelRectSGIX(Display* display, int screen, int channel, int* dx, int* dy, int* dw, int* dh) {
// return (*ptrglxQueryChannelRectSGIX)(display, screen, channel, dx, dy, dw, dh);
// }
// int goglxQueryChannelDeltasSGIX(Display* display, int screen, int channel, int* x, int* y, int* w, int* h) {
// return (*ptrglxQueryChannelDeltasSGIX)(display, screen, channel, x, y, w, h);
// }
// int goglxChannelRectSyncSGIX(Display* display, int screen, int channel, GLenum synctype) {
// return (*ptrglxChannelRectSyncSGIX)(display, screen, channel, synctype);
// }
// // SGIX_video_source
// GLXVideoSourceSGIX goglxCreateGLXVideoSourceSGIX(Display* display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode) {
// return (*ptrglxCreateGLXVideoSourceSGIX)(display, screen, server, path, nodeClass, drainNode);
// }
// void goglxDestroyGLXVideoSourceSGIX(Display* dpy, GLXVideoSourceSGIX glxvideosource) {
// (*ptrglxDestroyGLXVideoSourceSGIX)(dpy, glxvideosource);
// }
// // SGI_cushion
// void goglxCushionSGI(Display* dpy, Window window, float cushion) {
// (*ptrglxCushionSGI)(dpy, window, cushion);
// }
// // SGI_make_current_read
// Bool goglxMakeCurrentReadSGI(Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) {
// return (*ptrglxMakeCurrentReadSGI)(dpy, draw, read, ctx);
// }
// GLXDrawable goglxGetCurrentReadDrawableSGI() {
// return (*ptrglxGetCurrentReadDrawableSGI)();
// }
// // SGI_swap_control
// int goglxSwapIntervalSGI(int interval) {
// return (*ptrglxSwapIntervalSGI)(interval);
// }
// // SGI_video_sync
// int goglxGetVideoSyncSGI(unsigned int* count) {
// return (*ptrglxGetVideoSyncSGI)(count);
// }
// int goglxWaitVideoSyncSGI(int divisor, int remainder, unsigned int* count) {
// return (*ptrglxWaitVideoSyncSGI)(divisor, remainder, count);
// }
// // SUN_get_transparent_index
// Status goglxGetTransparentIndexSUN(Display* dpy, Window overlay, Window underlay, long* pTransparentIndex) {
// return (*ptrglxGetTransparentIndexSUN)(dpy, overlay, underlay, pTransparentIndex);
// }
// // VERSION_1_3
// GLXFBConfig * goglxGetFBConfigs(Display* dpy, int screen, int* nelements) {
// return (*ptrglxGetFBConfigs)(dpy, screen, nelements);
// }
// GLXFBConfig * goglxChooseFBConfig(Display* dpy, int screen, int* attrib_list, int* nelements) {
// return (*ptrglxChooseFBConfig)(dpy, screen, attrib_list, nelements);
// }
// int goglxGetFBConfigAttrib(Display* dpy, GLXFBConfig config, int attribute, int* value) {
// return (*ptrglxGetFBConfigAttrib)(dpy, config, attribute, value);
// }
// XVisualInfo * goglxGetVisualFromFBConfig(Display* dpy, GLXFBConfig config) {
// return (*ptrglxGetVisualFromFBConfig)(dpy, config);
// }
// GLXWindow goglxCreateWindow(Display* dpy, GLXFBConfig config, Window win, int* attrib_list) {
// return (*ptrglxCreateWindow)(dpy, config, win, attrib_list);
// }
// void goglxDestroyWindow(Display* dpy, GLXWindow win) {
// (*ptrglxDestroyWindow)(dpy, win);
// }
// GLXPixmap goglxCreatePixmap(Display* dpy, GLXFBConfig config, Pixmap pixmap, int* attrib_list) {
// return (*ptrglxCreatePixmap)(dpy, config, pixmap, attrib_list);
// }
// void goglxDestroyPixmap(Display* dpy, GLXPixmap pixmap) {
// (*ptrglxDestroyPixmap)(dpy, pixmap);
// }
// GLXPbuffer goglxCreatePbuffer(Display* dpy, GLXFBConfig config, int* attrib_list) {
// return (*ptrglxCreatePbuffer)(dpy, config, attrib_list);
// }
// void goglxDestroyPbuffer(Display* dpy, GLXPbuffer pbuf) {
// (*ptrglxDestroyPbuffer)(dpy, pbuf);
// }
// void goglxQueryDrawable(Display* dpy, GLXDrawable draw, int attribute, unsigned int* value) {
// (*ptrglxQueryDrawable)(dpy, draw, attribute, value);
// }
// GLXContext goglxCreateNewContext(Display* dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct) {
// return (*ptrglxCreateNewContext)(dpy, config, render_type, share_list, direct);
// }
// Bool goglxMakeContextCurrent(Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) {
// return (*ptrglxMakeContextCurrent)(dpy, draw, read, ctx);
// }
// GLXDrawable goglxGetCurrentReadDrawable() {
// return (*ptrglxGetCurrentReadDrawable)();
// }
// Display * goglxGetCurrentDisplay() {
// return (*ptrglxGetCurrentDisplay)();
// }
// int goglxQueryContext(Display* dpy, GLXContext ctx, int attribute, int* value) {
// return (*ptrglxQueryContext)(dpy, ctx, attribute, value);
// }
// void goglxSelectEvent(Display* dpy, GLXDrawable draw, unsigned long event_mask) {
// (*ptrglxSelectEvent)(dpy, draw, event_mask);
// }
// void goglxGetSelectedEvent(Display* dpy, GLXDrawable draw, unsigned long* event_mask) {
// (*ptrglxGetSelectedEvent)(dpy, draw, event_mask);
// }
// // VERSION_1_4
// __GLXextFuncPtr goglxGetProcAddress(GLubyte* procName) {
// return (*ptrglxGetProcAddress)(procName);
// }
// // glx
// void goglxRender() {
// (*ptrglxRender)();
// }
// void goglxRenderLarge() {
// (*ptrglxRenderLarge)();
// }
// void goglxCreateContext(GLint gc_id, GLint screen, GLint visual, GLint share_list) {
// (*ptrglxCreateContext)(gc_id, screen, visual, share_list);
// }
// void goglxDestroyContext(GLint context) {
// (*ptrglxDestroyContext)(context);
// }
// void goglxMakeCurrent(GLint drawable, GLint context) {
// (*ptrglxMakeCurrent)(drawable, context);
// }
// void goglxIsDirect(GLint dpy, GLint context) {
// (*ptrglxIsDirect)(dpy, context);
// }
// void goglxQueryVersion(GLint* major, GLint* minor) {
// (*ptrglxQueryVersion)(major, minor);
// }
// void goglxWaitGL(GLint context) {
// (*ptrglxWaitGL)(context);
// }
// void goglxWaitX() {
// (*ptrglxWaitX)();
// }
// void goglxCopyContext(GLint source, GLint dest, GLint mask) {
// (*ptrglxCopyContext)(source, dest, mask);
// }
// void goglxSwapBuffers(GLint drawable) {
// (*ptrglxSwapBuffers)(drawable);
// }
// void goglxUseXFont(GLint font, GLint first, GLint count, GLint list_base) {
// (*ptrglxUseXFont)(font, first, count, list_base);
// }
// void goglxCreateGLXPixmap(GLint visual, GLint pixmap, GLint glxpixmap) {
// (*ptrglxCreateGLXPixmap)(visual, pixmap, glxpixmap);
// }
// void goglxGetVisualConfigs() {
// (*ptrglxGetVisualConfigs)();
// }
// void goglxDestroyGLXPixmap(GLint pixmap) {
// (*ptrglxDestroyGLXPixmap)(pixmap);
// }
// void goglxVendorPrivate() {
// (*ptrglxVendorPrivate)();
// }
// void goglxVendorPrivateWithReply() {
// (*ptrglxVendorPrivateWithReply)();
// }
// void goglxQueryExtensionsString(GLint screen) {
// (*ptrglxQueryExtensionsString)(screen);
// }
// void goglxQueryServerString(GLint screen, GLint name) {
// (*ptrglxQueryServerString)(screen, name);
// }
// void goglxClientInfo() {
// (*ptrglxClientInfo)();
// }
// void goglxGetFBConfigs() {
// (*ptrglxGetFBConfigs)();
// }
// void goglxCreatePixmap(GLint config, GLint pixmap, GLint glxpixmap) {
// (*ptrglxCreatePixmap)(config, pixmap, glxpixmap);
// }
// void goglxDestroyPixmap(GLint glxpixmap) {
// (*ptrglxDestroyPixmap)(glxpixmap);
// }
// void goglxCreateNewContext(GLint config, GLint render_type, GLint share_list, GLint direct) {
// (*ptrglxCreateNewContext)(config, render_type, share_list, direct);
// }
// void goglxQueryContext() {
// (*ptrglxQueryContext)();
// }
// void goglxMakeContextCurrent(GLint drawable, GLint readdrawable, GLint context) {
// (*ptrglxMakeContextCurrent)(drawable, readdrawable, context);
// }
// void goglxCreatePbuffer(GLint config, GLint pbuffer) {
// (*ptrglxCreatePbuffer)(config, pbuffer);
// }
// void goglxDestroyPbuffer(GLint pbuffer) {
// (*ptrglxDestroyPbuffer)(pbuffer);
// }
// void goglxGetDrawableAttributes(GLint drawable) {
// (*ptrglxGetDrawableAttributes)(drawable);
// }
// void goglxChangeDrawableAttributes(GLint drawable) {
// (*ptrglxChangeDrawableAttributes)(drawable);
// }
// void goglxCreateWindow(GLint config, GLint window, GLint glxwindow) {
// (*ptrglxCreateWindow)(config, window, glxwindow);
// }
// void goglxDestroyWindow(GLint glxwindow) {
// (*ptrglxDestroyWindow)(glxwindow);
// }
// void goglxSwapIntervalSGI() {
// (*ptrglxSwapIntervalSGI)();
// }
// void goglxMakeCurrentReadSGI(GLint drawable, GLint readdrawable, GLint context) {
// (*ptrglxMakeCurrentReadSGI)(drawable, readdrawable, context);
// }
// void goglxCreateGLXVideoSourceSGIX(GLint dpy, GLint screen, GLint server, GLint path, GLint class, GLint node) {
// (*ptrglxCreateGLXVideoSourceSGIX)(dpy, screen, server, path, class, node);
// }
// void goglxDestroyGLXVideoSourceSGIX(GLint dpy, GLint glxvideosource) {
// (*ptrglxDestroyGLXVideoSourceSGIX)(dpy, glxvideosource);
// }
// void goglxQueryContextInfoEXT() {
// (*ptrglxQueryContextInfoEXT)();
// }
// void goglxGetFBConfigsSGIX() {
// (*ptrglxGetFBConfigsSGIX)();
// }
// void goglxCreateContextWithConfigSGIX(GLint gc_id, GLint screen, GLint config, GLint share_list) {
// (*ptrglxCreateContextWithConfigSGIX)(gc_id, screen, config, share_list);
// }
// void goglxCreateGLXPixmapWithConfigSGIX(GLint config, GLint pixmap, GLint glxpixmap) {
// (*ptrglxCreateGLXPixmapWithConfigSGIX)(config, pixmap, glxpixmap);
// }
// void goglxCreateGLXPbufferSGIX(GLint config, GLint pbuffer) {
// (*ptrglxCreateGLXPbufferSGIX)(config, pbuffer);
// }
// void goglxDestroyGLXPbufferSGIX(GLint pbuffer) {
// (*ptrglxDestroyGLXPbufferSGIX)(pbuffer);
// }
// void goglxChangeDrawableAttributesSGIX(GLint drawable) {
// (*ptrglxChangeDrawableAttributesSGIX)(drawable);
// }
// void goglxGetDrawableAttributesSGIX(GLint drawable) {
// (*ptrglxGetDrawableAttributesSGIX)(drawable);
// }
// void goglxJoinSwapGroupSGIX(GLint window, GLint group) {
// (*ptrglxJoinSwapGroupSGIX)(window, group);
// }
// void goglxBindSwapBarrierSGIX(GLint window, GLint barrier) {
// (*ptrglxBindSwapBarrierSGIX)(window, barrier);
// }
// void goglxQueryMaxSwapBarriersSGIX() {
// (*ptrglxQueryMaxSwapBarriersSGIX)();
// }
// GLXHyperpipeNetworkSGIX * goglxQueryHyperpipeNetworkSGIX(Display* dpy, int* npipes) {
// return (*ptrglxQueryHyperpipeNetworkSGIX)(dpy, npipes);
// }
// int goglxHyperpipeConfigSGIX(Display* dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX* cfg, int* hpId) {
// return (*ptrglxHyperpipeConfigSGIX)(dpy, networkId, npipes, cfg, hpId);
// }
// GLXHyperpipeConfigSGIX * goglxQueryHyperpipeConfigSGIX(Display* dpy, int hpId, int* npipes) {
// return (*ptrglxQueryHyperpipeConfigSGIX)(dpy, hpId, npipes);
// }
// int goglxDestroyHyperpipeConfigSGIX(Display* dpy, int hpId) {
// return (*ptrglxDestroyHyperpipeConfigSGIX)(dpy, hpId);
// }
// int goglxBindHyperpipeSGIX(Display* dpy, int hpId) {
// return (*ptrglxBindHyperpipeSGIX)(dpy, hpId);
// }
// int goglxQueryHyperpipeBestAttribSGIX(Display* dpy, int timeSlice, int attrib, int size, GLvoid* attribList, GLvoid* returnAttribList) {
// return (*ptrglxQueryHyperpipeBestAttribSGIX)(dpy, timeSlice, attrib, size, attribList, returnAttribList);
// }
// int goglxHyperpipeAttribSGIX(Display* dpy, int timeSlice, int attrib, int size, void* attribList) {
// return (*ptrglxHyperpipeAttribSGIX)(dpy, timeSlice, attrib, size, attribList);
// }
// int goglxQueryHyperpipeAttribSGIX(Display* dpy, int timeSlice, int attrib, int size, void* returnAttribList) {
// return (*ptrglxQueryHyperpipeAttribSGIX)(dpy, timeSlice, attrib, size, returnAttribList);
// }
//
// int init_ARB_create_context() {
// ptrglxCreateContextAttribsARB = goglxGetProcAddress("glxCreateContextAttribsARB");
// if(ptrglxCreateContextAttribsARB == NULL) return 1;
// return 0;
// }
// int init_ARB_get_proc_address() {
// ptrglxGetProcAddressARB = goglxGetProcAddress("glxGetProcAddressARB");
// if(ptrglxGetProcAddressARB == NULL) return 1;
// return 0;
// }
// int init_EXT_import_context() {
// ptrglxGetCurrentDisplayEXT = goglxGetProcAddress("glxGetCurrentDisplayEXT");
// if(ptrglxGetCurrentDisplayEXT == NULL) return 1;
// ptrglxQueryContextInfoEXT = goglxGetProcAddress("glxQueryContextInfoEXT");
// if(ptrglxQueryContextInfoEXT == NULL) return 1;
// ptrglxGetContextIDEXT = goglxGetProcAddress("glxGetContextIDEXT");
// if(ptrglxGetContextIDEXT == NULL) return 1;
// ptrglxImportContextEXT = goglxGetProcAddress("glxImportContextEXT");
// if(ptrglxImportContextEXT == NULL) return 1;
// ptrglxFreeContextEXT = goglxGetProcAddress("glxFreeContextEXT");
// if(ptrglxFreeContextEXT == NULL) return 1;
// return 0;
// }
// int init_EXT_swap_control() {
// ptrglxSwapIntervalEXT = goglxGetProcAddress("glxSwapIntervalEXT");
// if(ptrglxSwapIntervalEXT == NULL) return 1;
// return 0;
// }
// int init_EXT_texture_from_pixmap() {
// ptrglxBindTexImageEXT = goglxGetProcAddress("glxBindTexImageEXT");
// if(ptrglxBindTexImageEXT == NULL) return 1;
// ptrglxReleaseTexImageEXT = goglxGetProcAddress("glxReleaseTexImageEXT");
// if(ptrglxReleaseTexImageEXT == NULL) return 1;
// return 0;
// }
// int init_MESA_agp_offset() {
// ptrglxGetAGPOffsetMESA = goglxGetProcAddress("glxGetAGPOffsetMESA");
// if(ptrglxGetAGPOffsetMESA == NULL) return 1;
// return 0;
// }
// int init_MESA_copy_sub_buffer() {
// ptrglxCopySubBufferMESA = goglxGetProcAddress("glxCopySubBufferMESA");
// if(ptrglxCopySubBufferMESA == NULL) return 1;
// return 0;
// }
// int init_MESA_pixmap_colormap() {
// ptrglxCreateGLXPixmapMESA = goglxGetProcAddress("glxCreateGLXPixmapMESA");
// if(ptrglxCreateGLXPixmapMESA == NULL) return 1;
// return 0;
// }
// int init_MESA_release_buffers() {
// ptrglxReleaseBuffersMESA = goglxGetProcAddress("glxReleaseBuffersMESA");
// if(ptrglxReleaseBuffersMESA == NULL) return 1;
// return 0;
// }
// int init_MESA_set_3dfx_mode() {
// ptrglxSet3DfxModeMESA = goglxGetProcAddress("glxSet3DfxModeMESA");
// if(ptrglxSet3DfxModeMESA == NULL) return 1;
// return 0;
// }
// int init_NV_copy_image() {
// ptrglxCopyImageSubDataNV = goglxGetProcAddress("glxCopyImageSubDataNV");
// if(ptrglxCopyImageSubDataNV == NULL) return 1;
// return 0;
// }
// int init_NV_present_video() {
// ptrglxEnumerateVideoDevicesNV = goglxGetProcAddress("glxEnumerateVideoDevicesNV");
// if(ptrglxEnumerateVideoDevicesNV == NULL) return 1;
// ptrglxBindVideoDeviceNV = goglxGetProcAddress("glxBindVideoDeviceNV");
// if(ptrglxBindVideoDeviceNV == NULL) return 1;
// return 0;
// }
// int init_NV_swap_group() {
// ptrglxJoinSwapGroupNV = goglxGetProcAddress("glxJoinSwapGroupNV");
// if(ptrglxJoinSwapGroupNV == NULL) return 1;
// ptrglxBindSwapBarrierNV = goglxGetProcAddress("glxBindSwapBarrierNV");
// if(ptrglxBindSwapBarrierNV == NULL) return 1;
// ptrglxQuerySwapGroupNV = goglxGetProcAddress("glxQuerySwapGroupNV");
// if(ptrglxQuerySwapGroupNV == NULL) return 1;
// ptrglxQueryMaxSwapGroupsNV = goglxGetProcAddress("glxQueryMaxSwapGroupsNV");
// if(ptrglxQueryMaxSwapGroupsNV == NULL) return 1;
// ptrglxQueryFrameCountNV = goglxGetProcAddress("glxQueryFrameCountNV");
// if(ptrglxQueryFrameCountNV == NULL) return 1;
// ptrglxResetFrameCountNV = goglxGetProcAddress("glxResetFrameCountNV");
// if(ptrglxResetFrameCountNV == NULL) return 1;
// return 0;
// }
// int init_NV_video_capture() {
// ptrglxBindVideoCaptureDeviceNV = goglxGetProcAddress("glxBindVideoCaptureDeviceNV");
// if(ptrglxBindVideoCaptureDeviceNV == NULL) return 1;
// ptrglxEnumerateVideoCaptureDevicesNV = goglxGetProcAddress("glxEnumerateVideoCaptureDevicesNV");
// if(ptrglxEnumerateVideoCaptureDevicesNV == NULL) return 1;
// ptrglxLockVideoCaptureDeviceNV = goglxGetProcAddress("glxLockVideoCaptureDeviceNV");
// if(ptrglxLockVideoCaptureDeviceNV == NULL) return 1;
// ptrglxQueryVideoCaptureDeviceNV = goglxGetProcAddress("glxQueryVideoCaptureDeviceNV");
// if(ptrglxQueryVideoCaptureDeviceNV == NULL) return 1;
// ptrglxReleaseVideoCaptureDeviceNV = goglxGetProcAddress("glxReleaseVideoCaptureDeviceNV");
// if(ptrglxReleaseVideoCaptureDeviceNV == NULL) return 1;
// return 0;
// }
// int init_NV_video_output() {
// ptrglxGetVideoDeviceNV = goglxGetProcAddress("glxGetVideoDeviceNV");
// if(ptrglxGetVideoDeviceNV == NULL) return 1;
// ptrglxReleaseVideoDeviceNV = goglxGetProcAddress("glxReleaseVideoDeviceNV");
// if(ptrglxReleaseVideoDeviceNV == NULL) return 1;
// ptrglxBindVideoImageNV = goglxGetProcAddress("glxBindVideoImageNV");
// if(ptrglxBindVideoImageNV == NULL) return 1;
// ptrglxReleaseVideoImageNV = goglxGetProcAddress("glxReleaseVideoImageNV");
// if(ptrglxReleaseVideoImageNV == NULL) return 1;
// ptrglxSendPbufferToVideoNV = goglxGetProcAddress("glxSendPbufferToVideoNV");
// if(ptrglxSendPbufferToVideoNV == NULL) return 1;
// ptrglxGetVideoInfoNV = goglxGetProcAddress("glxGetVideoInfoNV");
// if(ptrglxGetVideoInfoNV == NULL) return 1;
// return 0;
// }
// int init_OML_sync_control() {
// ptrglxGetSyncValuesOML = goglxGetProcAddress("glxGetSyncValuesOML");
// if(ptrglxGetSyncValuesOML == NULL) return 1;
// ptrglxGetMscRateOML = goglxGetProcAddress("glxGetMscRateOML");
// if(ptrglxGetMscRateOML == NULL) return 1;