summaryrefslogtreecommitdiff
path: root/linux/linux_gl.h
blob: 31b522e717765ffd48ddb42ea4c7d2cded156c3e (plain)
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
#ifndef _LINUX_GL_H_
#define _LINUX_GL_H_

// =============================================================================
// GLX functions typedefs

typedef XVisualInfo* (*PFNGLXCHOOSEVISUAL) (Display *dpy, int screen, int *attribList);
typedef GLXContext (*PFNGLXCREATECONTEXT) (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct);
typedef void (*PFNGLXDESTROYCONTEXT) (Display *dpy, GLXContext ctx);
typedef Bool (*PFNGLXMAKECURRENT) (Display *dpy, GLXDrawable drawable, GLXContext ctx);
typedef void (*PFNGLXCOPYCONTEXT) (Display *dpy, GLXContext src, GLXContext dst, GLuint mask);
typedef void (*PFNGLXSWAPBUFFERS) (Display *dpy, GLXDrawable drawable);
typedef GLXPixmap (*PFNGLXCREATEGLXPIXMAP) (Display *dpy, XVisualInfo *visual, Pixmap pixmap);
typedef void (*PFNGLXDESTROYGLXPIXMAP) (Display *dpy, GLXPixmap pixmap);
typedef Bool (*PFNGLXQUERYEXTENSION) (Display *dpy, int *errorb, int *event);
typedef Bool (*PFNGLXQUERYVERSION) (Display *dpy, int *maj, int *min);
typedef Bool (*PFNGLXISDIRECT) (Display *dpy, GLXContext ctx);
typedef int (*PFNGLXGETCONFIG) (Display *dpy, XVisualInfo *visual, int attrib, int *value);
typedef GLXContext (*PFNGLXGETCURRENTCONTEXT) (void);
typedef GLXDrawable (*PFNGLXGETCURRENTDRAWABLE) (void);
typedef void (*PFNGLXWAITGL) (void);
typedef void (*PFNGLXWAITX) (void);
typedef void (*PFNGLXUSEXFONT) (Font font, int first, int count, int list);

// GLX 1.1 and later
typedef const char* (*PFNGLXQUERYEXTENSIONSSTRING) (Display *dpy, int screen); 
typedef const char* (*PFNGLXQUERYSERVERSTRING) (Display *dpy, int screen, int name);
typedef const char* (*PFNGLXGETCLIENTSTRING) (Display *dpy, int name);

// GLX_MESA_pixmap_colormap
typedef GLXPixmap (*PFNGLXCREATEGLXPIXMAPMESA) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap);

// GLX_MESA_release_buffers
typedef Bool (*PFNGLXRELEASEBUFFERSMESA) (Display *dpy, GLXDrawable d);

// GLX_MESA_copy_sub_buffer
typedef void (*PFNGLXCOPYSUBBUFFERMESA) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height);

// GLX_MESA_set_3dfx_mode
typedef GLboolean (*PFNGLXSET3DFXMODEMESA) (GLint mode);

// GLX_SGI_video_sync
typedef int (*PFNGLXGETVIDEOSYNCSGI) (unsigned int *count);
typedef int (*PFNGLXWAITVIDEOSYNCSGI) (int divisor, int remainder, unsigned int *count);

// GLX_ARB_get_proc_address
typedef void* (*PFNGLXGETPROCADDRESSARB) (const GLubyte *procName);


// =============================================================================
// GLX extern declarations

extern PFNGLXCHOOSEVISUAL pfnglXChooseVisual;
extern PFNGLXCREATECONTEXT pfnglXCreateContext;
extern PFNGLXDESTROYCONTEXT pfnglXDestroyContext;
extern PFNGLXMAKECURRENT pfnglXMakeCurrent;
extern PFNGLXCOPYCONTEXT pfnglXCopyContext;
extern PFNGLXSWAPBUFFERS pfnglXSwapBuffers;
extern PFNGLXCREATEGLXPIXMAP pfnglXCreateGLXPixmap;
extern PFNGLXDESTROYGLXPIXMAP pfnglXDestroyGLXPixmap;
extern PFNGLXQUERYEXTENSION pfnglXQueryExtension;
extern PFNGLXQUERYVERSION pfnglXQueryVersion;
extern PFNGLXISDIRECT pfnglXIsDirect;
extern PFNGLXGETCONFIG pfnglXGetConfig;
extern PFNGLXGETCURRENTCONTEXT pfnglXGetCurrentContext;
extern PFNGLXGETCURRENTDRAWABLE pfnglXGetCurrentDrawable;
extern PFNGLXWAITGL pfnglXWaitGL;
extern PFNGLXWAITX pfnglXWaitX;
extern PFNGLXUSEXFONT pfnglXUseXFont;
extern PFNGLXQUERYEXTENSIONSSTRING pfnglXQueryExtensionsString;
extern PFNGLXQUERYSERVERSTRING pfnglXQueryServerString;
extern PFNGLXGETCLIENTSTRING pfnglXGetClientString;
//extern PFNGLXCREATEGLXPIXMAPMESA pfnglXCreateGLXPixmapMESA;
//extern PFNGLXRELEASEBUFFERSMESA pfnglXReleaseBuffersMESA;
//extern PFNGLXCOPYSUBBUFFERMESA pfnglXCopySubBufferMESA;
//extern PFNGLXSET3DFXMODEMESA pfnglXSet3DfxModeMESA;
//extern PFNGLXGETVIDEOSYNCSGI pfnglXGetVideoSyncSGI;
//extern PFNGLXWAITVIDEOSYNCSGI pfnglXWaitVideoSyncSGI;
extern PFNGLXGETPROCADDRESSARB pfnglXGetProcAddressARB;


// =============================================================================
// Replace GLX functions

#define glXChooseVisual pfnglXChooseVisual;
#define glXCreateContext pfnglXCreateContext;
#define glXDestroyContext pfnglXDestroyContext;
#define glXMakeCurrent pfnglXMakeCurrent;
#define glXCopyContext pfnglXCopyContext;
#define glXSwapBuffers pfnglXSwapBuffers;
#define glXCreateGLXPixmap pfnglXCreateGLXPixmap;
#define glXDestroyGLXPixmap pfnglXDestroyGLXPixmap;
#define glXQueryExtension pfnglXQueryExtension;
#define glXQueryVersion pfnglXQueryVersion;
#define glXIsDirect pfnglXIsDirect;
#define glXGetConfig pfnglXGetConfig;
#define glXGetCurrentContext pfnglXGetCurrentContext;
#define glXGetCurrentDrawable pfnglXGetCurrentDrawable;
#define glXWaitGL pfnglXWaitGL;
#define glXWaitX pfnglXWaitX;
#define glXUseXFont pfnglXUseXFont;
#define glXQueryExtensionsString pfnglXQueryExtensionsString;
#define glXQueryServerString pfnglXQueryServerString;
#define glXGetClientString pfnglXGetClientString;
//#define glXCreateGLXPixmapMESA pfnglXCreateGLXPixmapMESA;
//#define glXReleaseBuffersMESA pfnglXReleaseBuffersMESA;
//#define glXCopySubBufferMESA pfnglXCopySubBufferMESA;
//#define glXSet3DfxModeMESA pfnglXSet3DfxModeMESA;
//#define glXGetVideoSyncSGI pfnglXGetVideoSyncSGI;
//#define glXWaitVideoSyncSGI pfnglXWaitVideoSyncSGI;
#define glXGetProcAddressARB pfnglXGetProcAddressARB;


#endif // _LINUX_GL_H_