// GLX Functions implemented by primus
DEF_GLX_PROTO(GLXContext, glXCreateContext,     (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct))
DEF_GLX_PROTO(GLXContext, glXCreateNewContext,  (Display *dpy, GLXFBConfig config, int renderType, GLXContext shareList, Bool direct))
DEF_GLX_PROTO(void,       glXDestroyContext,    (Display *dpy, GLXContext ctx))
DEF_GLX_PROTO(Bool,       glXMakeCurrent,       (Display *dpy, GLXDrawable drawable, GLXContext ctx))
DEF_GLX_PROTO(Bool,       glXMakeContextCurrent,(Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx))
DEF_GLX_PROTO(void,       glXSwapBuffers,       (Display *dpy, GLXDrawable drawable))

DEF_GLX_PROTO(__GLXextFuncPtr, glXGetProcAddressARB, (const GLubyte *))
DEF_GLX_PROTO(__GLXextFuncPtr, glXGetProcAddress,    (const GLubyte *))

DEF_GLX_PROTO(const char*,  glXGetClientString,       (Display *dpy, int name),name)
DEF_GLX_PROTO(const char*,  glXQueryExtensionsString, (Display *dpy, int screen),screen)

DEF_GLX_PROTO(GLXWindow,    glXCreateWindow,          (Display *dpy, GLXFBConfig config, Window win, const int *attribList),config,win,attribList)
DEF_GLX_PROTO(void,         glXDestroyWindow,         (Display *dpy, GLXWindow window),window)
DEF_GLX_PROTO(GLXPbuffer,   glXCreatePbuffer,         (Display *dpy, GLXFBConfig config, const int *attribList),config,attribList)
DEF_GLX_PROTO(void,         glXDestroyPbuffer,        (Display *dpy, GLXPbuffer pbuf),pbuf)
DEF_GLX_PROTO(GLXPixmap,    glXCreatePixmap,          (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attribList),config,pixmap,attribList)
DEF_GLX_PROTO(void,         glXDestroyPixmap,         (Display *dpy, GLXPixmap pixmap),pixmap)
DEF_GLX_PROTO(GLXPixmap,    glXCreateGLXPixmap,       (Display *dpy, XVisualInfo *visual, Pixmap pixmap),visual,pixmap)
DEF_GLX_PROTO(void,         glXDestroyGLXPixmap,      (Display *dpy, GLXPixmap pixmap),pixmap)
DEF_GLX_PROTO(XVisualInfo*, glXGetVisualFromFBConfig, (Display *dpy, GLXFBConfig config),config)
DEF_GLX_PROTO(int,          glXGetFBConfigAttrib,     (Display *dpy, GLXFBConfig config, int attribute, int *value),config,attribute,value)
DEF_GLX_PROTO(void,         glXQueryDrawable,         (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value),draw,attribute,value)

DEF_GLX_PROTO(XVisualInfo*, glXChooseVisual,          (Display *dpy, int screen, int *attribList),screen,attribList)
DEF_GLX_PROTO(int,          glXGetConfig,             (Display *dpy, XVisualInfo *visual, int attrib, int *value),visual,attrib,value)

DEF_GLX_PROTO(void,         glXUseXFont,              (Font font, int first, int count, int list))
DEF_GLX_PROTO(GLXContext,   glXGetCurrentContext,     (void))
DEF_GLX_PROTO(GLXDrawable,  glXGetCurrentDrawable,    (void))
DEF_GLX_PROTO(void,         glXWaitGL,                (void))
DEF_GLX_PROTO(void,         glXWaitX,                 (void))
DEF_GLX_PROTO(Display*,     glXGetCurrentDisplay,     (void))
DEF_GLX_PROTO(GLXDrawable,  glXGetCurrentReadDrawable,(void))
