/* GdkGLExt - OpenGL Extension to GDK
 * Copyright (C) 2002-2004  Naofumi Yasufuku
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA.
 */

/*
 * This is a generated file.  Please modify "gen-gdkglglxext-h.pl".
 */

#ifndef __GDK_GL_GLXEXT_H__
#define __GDK_GL_GLXEXT_H__

#include <X11/Xlib.h>
#include <X11/Xutil.h>

#include <GL/gl.h>
#include <GL/glx.h>

#include <gdk/gdkgldefs.h>
#include <gdk/gdkglquery.h>
#include <gdk/gdkglconfig.h>

G_BEGIN_DECLS

#ifndef GLX_VERSION_1_3
typedef struct __GLXFBConfigRec *GLXFBConfig;
typedef XID GLXFBConfigID;
typedef XID GLXContextID;
typedef XID GLXWindow;
typedef XID GLXPbuffer;
#endif

#ifndef HAVE_GLXFBCONFIGSGIX
#if defined(GLX_SGIX_fbconfig) && defined(GDKGLEXT_NEED_GLXFBCONFIGSGIX_TYPEDEF)
typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
#endif
#endif

#ifndef HAVE_GLXFBCONFIGIDSGIX
#if defined(GLX_SGIX_fbconfig) && defined(GDKGLEXT_NEED_GLXFBCONFIGIDSGIX_TYPEDEF)
typedef XID GLXFBConfigIDSGIX;
#endif
#endif

#ifndef HAVE_GLXPBUFFERSGIX
#if defined(GLX_SGIX_pbuffer) && defined(GDKGLEXT_NEED_GLXPBUFFERSGIX_TYPEDEF)
typedef XID GLXPbufferSGIX;
#endif
#endif

/* for __GLXextFuncPtr typedef in glxext.h */
#ifndef HAVE___GLXEXTFUNCPTR
#if defined(GLX_ARB_get_proc_address) && defined(GDKGLEXT_NEED_GLXEXTFUNCPTR_TYPEDEF)
#undef GLX_ARB_get_proc_address
#endif
#endif

/* Suppress 'redefined' warnings (Solaris 8, etc.) */

#if !defined(GLX_ARB_multisample) && defined(GLX_SAMPLE_BUFFERS_ARB)
#define GLX_ARB_multisample 1
#endif

#if !defined(GLX_SGIS_multisample) && defined(GLX_SAMPLE_BUFFERS_SGIS)
#define GLX_SGIS_multisample 1
#endif

#if !defined(GLX_EXT_visual_rating) && defined(GLX_VISUAL_CAVEAT_EXT)
#define GLX_EXT_visual_rating 1
#endif

#if !defined(GLX_EXT_import_context) && defined(GLX_SHARE_CONTEXT_EXT)
#define GLX_EXT_import_context 1
#endif

/* Avoid old glxext.h bug. */
#if !defined(GLX_SGIX_video_source) && !defined(GDKGLEXT_NEED_GLXVIDEOSOURCESGIX_TYPEDEF)
#define GLX_SGIX_video_source 1
#endif

#undef __glxext_h_
#undef GLX_GLXEXT_VERSION
#include <gdk/glext/glxext.h>
#include <gdk/glext/glxext-extra.h>

/*
 * GLX_VERSION_1_3
 */

/* glXGetFBConfigs */
typedef GLXFBConfig * ( * GdkGLProc_glXGetFBConfigs) (Display *dpy, int screen, int *nelements);
GdkGLProc    gdk_gl_get_glXGetFBConfigs (void);
#define      gdk_gl_glXGetFBConfigs(proc, dpy, screen, nelements) \
  ( ((GdkGLProc_glXGetFBConfigs) (proc)) (dpy, screen, nelements) )

/* glXChooseFBConfig */
typedef GLXFBConfig * ( * GdkGLProc_glXChooseFBConfig) (Display *dpy, int screen, const int *attrib_list, int *nelements);
GdkGLProc    gdk_gl_get_glXChooseFBConfig (void);
#define      gdk_gl_glXChooseFBConfig(proc, dpy, screen, attrib_list, nelements) \
  ( ((GdkGLProc_glXChooseFBConfig) (proc)) (dpy, screen, attrib_list, nelements) )

/* glXGetFBConfigAttrib */
typedef int ( * GdkGLProc_glXGetFBConfigAttrib) (Display *dpy, GLXFBConfig config, int attribute, int *value);
GdkGLProc    gdk_gl_get_glXGetFBConfigAttrib (void);
#define      gdk_gl_glXGetFBConfigAttrib(proc, dpy, config, attribute, value) \
  ( ((GdkGLProc_glXGetFBConfigAttrib) (proc)) (dpy, config, attribute, value) )

/* glXGetVisualFromFBConfig */
typedef XVisualInfo * ( * GdkGLProc_glXGetVisualFromFBConfig) (Display *dpy, GLXFBConfig config);
GdkGLProc    gdk_gl_get_glXGetVisualFromFBConfig (void);
#define      gdk_gl_glXGetVisualFromFBConfig(proc, dpy, config) \
  ( ((GdkGLProc_glXGetVisualFromFBConfig) (proc)) (dpy, config) )

/* glXCreateWindow */
typedef GLXWindow ( * GdkGLProc_glXCreateWindow) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
GdkGLProc    gdk_gl_get_glXCreateWindow (void);
#define      gdk_gl_glXCreateWindow(proc, dpy, config, win, attrib_list) \
  ( ((GdkGLProc_glXCreateWindow) (proc)) (dpy, config, win, attrib_list) )

/* glXDestroyWindow */
typedef void ( * GdkGLProc_glXDestroyWindow) (Display *dpy, GLXWindow win);
GdkGLProc    gdk_gl_get_glXDestroyWindow (void);
#define      gdk_gl_glXDestroyWindow(proc, dpy, win) \
  ( ((GdkGLProc_glXDestroyWindow) (proc)) (dpy, win) )

/* glXCreatePixmap */
typedef GLXPixmap ( * GdkGLProc_glXCreatePixmap) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
GdkGLProc    gdk_gl_get_glXCreatePixmap (void);
#define      gdk_gl_glXCreatePixmap(proc, dpy, config, pixmap, attrib_list) \
  ( ((GdkGLProc_glXCreatePixmap) (proc)) (dpy, config, pixmap, attrib_list) )

/* glXDestroyPixmap */
typedef void ( * GdkGLProc_glXDestroyPixmap) (Display *dpy, GLXPixmap pixmap);
GdkGLProc    gdk_gl_get_glXDestroyPixmap (void);
#define      gdk_gl_glXDestroyPixmap(proc, dpy, pixmap) \
  ( ((GdkGLProc_glXDestroyPixmap) (proc)) (dpy, pixmap) )

/* glXCreatePbuffer */
typedef GLXPbuffer ( * GdkGLProc_glXCreatePbuffer) (Display *dpy, GLXFBConfig config, const int *attrib_list);
GdkGLProc    gdk_gl_get_glXCreatePbuffer (void);
#define      gdk_gl_glXCreatePbuffer(proc, dpy, config, attrib_list) \
  ( ((GdkGLProc_glXCreatePbuffer) (proc)) (dpy, config, attrib_list) )

/* glXDestroyPbuffer */
typedef void ( * GdkGLProc_glXDestroyPbuffer) (Display *dpy, GLXPbuffer pbuf);
GdkGLProc    gdk_gl_get_glXDestroyPbuffer (void);
#define      gdk_gl_glXDestroyPbuffer(proc, dpy, pbuf) \
  ( ((GdkGLProc_glXDestroyPbuffer) (proc)) (dpy, pbuf) )

/* glXQueryDrawable */
typedef void ( * GdkGLProc_glXQueryDrawable) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
GdkGLProc    gdk_gl_get_glXQueryDrawable (void);
#define      gdk_gl_glXQueryDrawable(proc, dpy, draw, attribute, value) \
  ( ((GdkGLProc_glXQueryDrawable) (proc)) (dpy, draw, attribute, value) )

/* glXCreateNewContext */
typedef GLXContext ( * GdkGLProc_glXCreateNewContext) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
GdkGLProc    gdk_gl_get_glXCreateNewContext (void);
#define      gdk_gl_glXCreateNewContext(proc, dpy, config, render_type, share_list, direct) \
  ( ((GdkGLProc_glXCreateNewContext) (proc)) (dpy, config, render_type, share_list, direct) )

/* glXMakeContextCurrent */
typedef Bool ( * GdkGLProc_glXMakeContextCurrent) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
GdkGLProc    gdk_gl_get_glXMakeContextCurrent (void);
#define      gdk_gl_glXMakeContextCurrent(proc, dpy, draw, read, ctx) \
  ( ((GdkGLProc_glXMakeContextCurrent) (proc)) (dpy, draw, read, ctx) )

/* glXGetCurrentReadDrawable */
typedef GLXDrawable ( * GdkGLProc_glXGetCurrentReadDrawable) (void);
GdkGLProc    gdk_gl_get_glXGetCurrentReadDrawable (void);
#define      gdk_gl_glXGetCurrentReadDrawable(proc) \
  ( ((GdkGLProc_glXGetCurrentReadDrawable) (proc)) () )

/* glXGetCurrentDisplay */
typedef Display * ( * GdkGLProc_glXGetCurrentDisplay) (void);
GdkGLProc    gdk_gl_get_glXGetCurrentDisplay (void);
#define      gdk_gl_glXGetCurrentDisplay(proc) \
  ( ((GdkGLProc_glXGetCurrentDisplay) (proc)) () )

/* glXQueryContext */
typedef int ( * GdkGLProc_glXQueryContext) (Display *dpy, GLXContext ctx, int attribute, int *value);
GdkGLProc    gdk_gl_get_glXQueryContext (void);
#define      gdk_gl_glXQueryContext(proc, dpy, ctx, attribute, value) \
  ( ((GdkGLProc_glXQueryContext) (proc)) (dpy, ctx, attribute, value) )

/* glXSelectEvent */
typedef void ( * GdkGLProc_glXSelectEvent) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
GdkGLProc    gdk_gl_get_glXSelectEvent (void);
#define      gdk_gl_glXSelectEvent(proc, dpy, draw, event_mask) \
  ( ((GdkGLProc_glXSelectEvent) (proc)) (dpy, draw, event_mask) )

/* glXGetSelectedEvent */
typedef void ( * GdkGLProc_glXGetSelectedEvent) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
GdkGLProc    gdk_gl_get_glXGetSelectedEvent (void);
#define      gdk_gl_glXGetSelectedEvent(proc, dpy, draw, event_mask) \
  ( ((GdkGLProc_glXGetSelectedEvent) (proc)) (dpy, draw, event_mask) )

/* proc struct */

typedef struct _GdkGL_GLX_VERSION_1_3 GdkGL_GLX_VERSION_1_3;

struct _GdkGL_GLX_VERSION_1_3
{
  GdkGLProc_glXGetFBConfigs glXGetFBConfigs;
  GdkGLProc_glXChooseFBConfig glXChooseFBConfig;
  GdkGLProc_glXGetFBConfigAttrib glXGetFBConfigAttrib;
  GdkGLProc_glXGetVisualFromFBConfig glXGetVisualFromFBConfig;
  GdkGLProc_glXCreateWindow glXCreateWindow;
  GdkGLProc_glXDestroyWindow glXDestroyWindow;
  GdkGLProc_glXCreatePixmap glXCreatePixmap;
  GdkGLProc_glXDestroyPixmap glXDestroyPixmap;
  GdkGLProc_glXCreatePbuffer glXCreatePbuffer;
  GdkGLProc_glXDestroyPbuffer glXDestroyPbuffer;
  GdkGLProc_glXQueryDrawable glXQueryDrawable;
  GdkGLProc_glXCreateNewContext glXCreateNewContext;
  GdkGLProc_glXMakeContextCurrent glXMakeContextCurrent;
  GdkGLProc_glXGetCurrentReadDrawable glXGetCurrentReadDrawable;
  GdkGLProc_glXGetCurrentDisplay glXGetCurrentDisplay;
  GdkGLProc_glXQueryContext glXQueryContext;
  GdkGLProc_glXSelectEvent glXSelectEvent;
  GdkGLProc_glXGetSelectedEvent glXGetSelectedEvent;
};

GdkGL_GLX_VERSION_1_3 *gdk_gl_get_GLX_VERSION_1_3 (void);

/*
 * GLX_VERSION_1_4
 */

/* glXGetProcAddress */
typedef __GLXextFuncPtr ( * GdkGLProc_glXGetProcAddress) (const GLubyte *procName);
GdkGLProc    gdk_gl_get_glXGetProcAddress (void);
#define      gdk_gl_glXGetProcAddress(proc, procName) \
  ( ((GdkGLProc_glXGetProcAddress) (proc)) (procName) )

/* proc struct */

typedef struct _GdkGL_GLX_VERSION_1_4 GdkGL_GLX_VERSION_1_4;

struct _GdkGL_GLX_VERSION_1_4
{
  GdkGLProc_glXGetProcAddress glXGetProcAddress;
};

GdkGL_GLX_VERSION_1_4 *gdk_gl_get_GLX_VERSION_1_4 (void);

/*
 * GLX_ARB_get_proc_address
 */

/* glXGetProcAddressARB */
typedef __GLXextFuncPtr ( * GdkGLProc_glXGetProcAddressARB) (const GLubyte *procName);
GdkGLProc    gdk_gl_get_glXGetProcAddressARB (void);
#define      gdk_gl_glXGetProcAddressARB(proc, procName) \
  ( ((GdkGLProc_glXGetProcAddressARB) (proc)) (procName) )

/* proc struct */

typedef struct _GdkGL_GLX_ARB_get_proc_address GdkGL_GLX_ARB_get_proc_address;

struct _GdkGL_GLX_ARB_get_proc_address
{
  GdkGLProc_glXGetProcAddressARB glXGetProcAddressARB;
};

GdkGL_GLX_ARB_get_proc_address *gdk_gl_get_GLX_ARB_get_proc_address (GdkGLConfig *glconfig);

/*
 * GLX_ARB_create_context
 */

/* glXCreateContextAttribsARB */
typedef GLXContext ( * GdkGLProc_glXCreateContextAttribsARB) (Display *dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list);
GdkGLProc    gdk_gl_get_glXCreateContextAttribsARB (void);
#define      gdk_gl_glXCreateContextAttribsARB(proc, dpy, config, share_context, direct, attrib_list) \
  ( ((GdkGLProc_glXCreateContextAttribsARB) (proc)) (dpy, config, share_context, direct, attrib_list) )

/* proc struct */

typedef struct _GdkGL_GLX_ARB_create_context GdkGL_GLX_ARB_create_context;

struct _GdkGL_GLX_ARB_create_context
{
  GdkGLProc_glXCreateContextAttribsARB glXCreateContextAttribsARB;
};

GdkGL_GLX_ARB_create_context *gdk_gl_get_GLX_ARB_create_context (GdkGLConfig *glconfig);

/*
 * GLX_SGI_swap_control
 */

/* glXSwapIntervalSGI */
typedef int ( * GdkGLProc_glXSwapIntervalSGI) (int interval);
GdkGLProc    gdk_gl_get_glXSwapIntervalSGI (void);
#define      gdk_gl_glXSwapIntervalSGI(proc, interval) \
  ( ((GdkGLProc_glXSwapIntervalSGI) (proc)) (interval) )

/* proc struct */

typedef struct _GdkGL_GLX_SGI_swap_control GdkGL_GLX_SGI_swap_control;

struct _GdkGL_GLX_SGI_swap_control
{
  GdkGLProc_glXSwapIntervalSGI glXSwapIntervalSGI;
};

GdkGL_GLX_SGI_swap_control *gdk_gl_get_GLX_SGI_swap_control (GdkGLConfig *glconfig);

/*
 * GLX_SGI_video_sync
 */

/* glXGetVideoSyncSGI */
typedef int ( * GdkGLProc_glXGetVideoSyncSGI) (unsigned int *count);
GdkGLProc    gdk_gl_get_glXGetVideoSyncSGI (void);
#define      gdk_gl_glXGetVideoSyncSGI(proc, count) \
  ( ((GdkGLProc_glXGetVideoSyncSGI) (proc)) (count) )

/* glXWaitVideoSyncSGI */
typedef int ( * GdkGLProc_glXWaitVideoSyncSGI) (int divisor, int remainder, unsigned int *count);
GdkGLProc    gdk_gl_get_glXWaitVideoSyncSGI (void);
#define      gdk_gl_glXWaitVideoSyncSGI(proc, divisor, remainder, count) \
  ( ((GdkGLProc_glXWaitVideoSyncSGI) (proc)) (divisor, remainder, count) )

/* proc struct */

typedef struct _GdkGL_GLX_SGI_video_sync GdkGL_GLX_SGI_video_sync;

struct _GdkGL_GLX_SGI_video_sync
{
  GdkGLProc_glXGetVideoSyncSGI glXGetVideoSyncSGI;
  GdkGLProc_glXWaitVideoSyncSGI glXWaitVideoSyncSGI;
};

GdkGL_GLX_SGI_video_sync *gdk_gl_get_GLX_SGI_video_sync (GdkGLConfig *glconfig);

/*
 * GLX_SGI_make_current_read
 */

/* glXMakeCurrentReadSGI */
typedef Bool ( * GdkGLProc_glXMakeCurrentReadSGI) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
GdkGLProc    gdk_gl_get_glXMakeCurrentReadSGI (void);
#define      gdk_gl_glXMakeCurrentReadSGI(proc, dpy, draw, read, ctx) \
  ( ((GdkGLProc_glXMakeCurrentReadSGI) (proc)) (dpy, draw, read, ctx) )

/* glXGetCurrentReadDrawableSGI */
typedef GLXDrawable ( * GdkGLProc_glXGetCurrentReadDrawableSGI) (void);
GdkGLProc    gdk_gl_get_glXGetCurrentReadDrawableSGI (void);
#define      gdk_gl_glXGetCurrentReadDrawableSGI(proc) \
  ( ((GdkGLProc_glXGetCurrentReadDrawableSGI) (proc)) () )

/* proc struct */

typedef struct _GdkGL_GLX_SGI_make_current_read GdkGL_GLX_SGI_make_current_read;

struct _GdkGL_GLX_SGI_make_current_read
{
  GdkGLProc_glXMakeCurrentReadSGI glXMakeCurrentReadSGI;
  GdkGLProc_glXGetCurrentReadDrawableSGI glXGetCurrentReadDrawableSGI;
};

GdkGL_GLX_SGI_make_current_read *gdk_gl_get_GLX_SGI_make_current_read (GdkGLConfig *glconfig);

/*
 * GLX_SGIX_video_source
 */

#ifdef _VL_H

/* glXCreateGLXVideoSourceSGIX */
typedef GLXVideoSourceSGIX ( * GdkGLProc_glXCreateGLXVideoSourceSGIX) (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode);
GdkGLProc    gdk_gl_get_glXCreateGLXVideoSourceSGIX (void);
#define      gdk_gl_glXCreateGLXVideoSourceSGIX(proc, display, screen, server, path, nodeClass, drainNode) \
  ( ((GdkGLProc_glXCreateGLXVideoSourceSGIX) (proc)) (display, screen, server, path, nodeClass, drainNode) )

/* glXDestroyGLXVideoSourceSGIX */
typedef void ( * GdkGLProc_glXDestroyGLXVideoSourceSGIX) (Display *dpy, GLXVideoSourceSGIX glxvideosource);
GdkGLProc    gdk_gl_get_glXDestroyGLXVideoSourceSGIX (void);
#define      gdk_gl_glXDestroyGLXVideoSourceSGIX(proc, dpy, glxvideosource) \
  ( ((GdkGLProc_glXDestroyGLXVideoSourceSGIX) (proc)) (dpy, glxvideosource) )

/* proc struct */

typedef struct _GdkGL_GLX_SGIX_video_source GdkGL_GLX_SGIX_video_source;

struct _GdkGL_GLX_SGIX_video_source
{
  GdkGLProc_glXCreateGLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX;
  GdkGLProc_glXDestroyGLXVideoSourceSGIX glXDestroyGLXVideoSourceSGIX;
};

GdkGL_GLX_SGIX_video_source *gdk_gl_get_GLX_SGIX_video_source (GdkGLConfig *glconfig);

#endif /* _VL_H */

/*
 * GLX_EXT_import_context
 */

/* glXGetCurrentDisplayEXT */
typedef Display * ( * GdkGLProc_glXGetCurrentDisplayEXT) (void);
GdkGLProc    gdk_gl_get_glXGetCurrentDisplayEXT (void);
#define      gdk_gl_glXGetCurrentDisplayEXT(proc) \
  ( ((GdkGLProc_glXGetCurrentDisplayEXT) (proc)) () )

/* glXQueryContextInfoEXT */
typedef int ( * GdkGLProc_glXQueryContextInfoEXT) (Display *dpy, GLXContext context, int attribute, int *value);
GdkGLProc    gdk_gl_get_glXQueryContextInfoEXT (void);
#define      gdk_gl_glXQueryContextInfoEXT(proc, dpy, context, attribute, value) \
  ( ((GdkGLProc_glXQueryContextInfoEXT) (proc)) (dpy, context, attribute, value) )

/* glXGetContextIDEXT */
typedef GLXContextID ( * GdkGLProc_glXGetContextIDEXT) (const GLXContext context);
GdkGLProc    gdk_gl_get_glXGetContextIDEXT (void);
#define      gdk_gl_glXGetContextIDEXT(proc, context) \
  ( ((GdkGLProc_glXGetContextIDEXT) (proc)) (context) )

/* glXImportContextEXT */
typedef GLXContext ( * GdkGLProc_glXImportContextEXT) (Display *dpy, GLXContextID contextID);
GdkGLProc    gdk_gl_get_glXImportContextEXT (void);
#define      gdk_gl_glXImportContextEXT(proc, dpy, contextID) \
  ( ((GdkGLProc_glXImportContextEXT) (proc)) (dpy, contextID) )

/* glXFreeContextEXT */
typedef void ( * GdkGLProc_glXFreeContextEXT) (Display *dpy, GLXContext context);
GdkGLProc    gdk_gl_get_glXFreeContextEXT (void);
#define      gdk_gl_glXFreeContextEXT(proc, dpy, context) \
  ( ((GdkGLProc_glXFreeContextEXT) (proc)) (dpy, context) )

/* proc struct */

typedef struct _GdkGL_GLX_EXT_import_context GdkGL_GLX_EXT_import_context;

struct _GdkGL_GLX_EXT_import_context
{
  GdkGLProc_glXGetCurrentDisplayEXT glXGetCurrentDisplayEXT;
  GdkGLProc_glXQueryContextInfoEXT glXQueryContextInfoEXT;
  GdkGLProc_glXGetContextIDEXT glXGetContextIDEXT;
  GdkGLProc_glXImportContextEXT glXImportContextEXT;
  GdkGLProc_glXFreeContextEXT glXFreeContextEXT;
};

GdkGL_GLX_EXT_import_context *gdk_gl_get_GLX_EXT_import_context (GdkGLConfig *glconfig);

/*
 * GLX_SGIX_fbconfig
 */

/* glXGetFBConfigAttribSGIX */
typedef int ( * GdkGLProc_glXGetFBConfigAttribSGIX) (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value);
GdkGLProc    gdk_gl_get_glXGetFBConfigAttribSGIX (void);
#define      gdk_gl_glXGetFBConfigAttribSGIX(proc, dpy, config, attribute, value) \
  ( ((GdkGLProc_glXGetFBConfigAttribSGIX) (proc)) (dpy, config, attribute, value) )

/* glXChooseFBConfigSGIX */
typedef GLXFBConfigSGIX * ( * GdkGLProc_glXChooseFBConfigSGIX) (Display *dpy, int screen, int *attrib_list, int *nelements);
GdkGLProc    gdk_gl_get_glXChooseFBConfigSGIX (void);
#define      gdk_gl_glXChooseFBConfigSGIX(proc, dpy, screen, attrib_list, nelements) \
  ( ((GdkGLProc_glXChooseFBConfigSGIX) (proc)) (dpy, screen, attrib_list, nelements) )

/* glXCreateGLXPixmapWithConfigSGIX */
typedef GLXPixmap ( * GdkGLProc_glXCreateGLXPixmapWithConfigSGIX) (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap);
GdkGLProc    gdk_gl_get_glXCreateGLXPixmapWithConfigSGIX (void);
#define      gdk_gl_glXCreateGLXPixmapWithConfigSGIX(proc, dpy, config, pixmap) \
  ( ((GdkGLProc_glXCreateGLXPixmapWithConfigSGIX) (proc)) (dpy, config, pixmap) )

/* glXCreateContextWithConfigSGIX */
typedef GLXContext ( * GdkGLProc_glXCreateContextWithConfigSGIX) (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct);
GdkGLProc    gdk_gl_get_glXCreateContextWithConfigSGIX (void);
#define      gdk_gl_glXCreateContextWithConfigSGIX(proc, dpy, config, render_type, share_list, direct) \
  ( ((GdkGLProc_glXCreateContextWithConfigSGIX) (proc)) (dpy, config, render_type, share_list, direct) )

/* glXGetVisualFromFBConfigSGIX */
typedef XVisualInfo * ( * GdkGLProc_glXGetVisualFromFBConfigSGIX) (Display *dpy, GLXFBConfigSGIX config);
GdkGLProc    gdk_gl_get_glXGetVisualFromFBConfigSGIX (void);
#define      gdk_gl_glXGetVisualFromFBConfigSGIX(proc, dpy, config) \
  ( ((GdkGLProc_glXGetVisualFromFBConfigSGIX) (proc)) (dpy, config) )

/* glXGetFBConfigFromVisualSGIX */
typedef GLXFBConfigSGIX ( * GdkGLProc_glXGetFBConfigFromVisualSGIX) (Display *dpy, XVisualInfo *vis);
GdkGLProc    gdk_gl_get_glXGetFBConfigFromVisualSGIX (void);
#define      gdk_gl_glXGetFBConfigFromVisualSGIX(proc, dpy, vis) \
  ( ((GdkGLProc_glXGetFBConfigFromVisualSGIX) (proc)) (dpy, vis) )

/* proc struct */

typedef struct _GdkGL_GLX_SGIX_fbconfig GdkGL_GLX_SGIX_fbconfig;

struct _GdkGL_GLX_SGIX_fbconfig
{
  GdkGLProc_glXGetFBConfigAttribSGIX glXGetFBConfigAttribSGIX;
  GdkGLProc_glXChooseFBConfigSGIX glXChooseFBConfigSGIX;
  GdkGLProc_glXCreateGLXPixmapWithConfigSGIX glXCreateGLXPixmapWithConfigSGIX;
  GdkGLProc_glXCreateContextWithConfigSGIX glXCreateContextWithConfigSGIX;
  GdkGLProc_glXGetVisualFromFBConfigSGIX glXGetVisualFromFBConfigSGIX;
  GdkGLProc_glXGetFBConfigFromVisualSGIX glXGetFBConfigFromVisualSGIX;
};

GdkGL_GLX_SGIX_fbconfig *gdk_gl_get_GLX_SGIX_fbconfig (GdkGLConfig *glconfig);

/*
 * GLX_SGIX_pbuffer
 */

/* glXCreateGLXPbufferSGIX */
typedef GLXPbufferSGIX ( * GdkGLProc_glXCreateGLXPbufferSGIX) (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list);
GdkGLProc    gdk_gl_get_glXCreateGLXPbufferSGIX (void);
#define      gdk_gl_glXCreateGLXPbufferSGIX(proc, dpy, config, width, height, attrib_list) \
  ( ((GdkGLProc_glXCreateGLXPbufferSGIX) (proc)) (dpy, config, width, height, attrib_list) )

/* glXDestroyGLXPbufferSGIX */
typedef void ( * GdkGLProc_glXDestroyGLXPbufferSGIX) (Display *dpy, GLXPbufferSGIX pbuf);
GdkGLProc    gdk_gl_get_glXDestroyGLXPbufferSGIX (void);
#define      gdk_gl_glXDestroyGLXPbufferSGIX(proc, dpy, pbuf) \
  ( ((GdkGLProc_glXDestroyGLXPbufferSGIX) (proc)) (dpy, pbuf) )

/* glXQueryGLXPbufferSGIX */
typedef int ( * GdkGLProc_glXQueryGLXPbufferSGIX) (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value);
GdkGLProc    gdk_gl_get_glXQueryGLXPbufferSGIX (void);
#define      gdk_gl_glXQueryGLXPbufferSGIX(proc, dpy, pbuf, attribute, value) \
  ( ((GdkGLProc_glXQueryGLXPbufferSGIX) (proc)) (dpy, pbuf, attribute, value) )

/* glXSelectEventSGIX */
typedef void ( * GdkGLProc_glXSelectEventSGIX) (Display *dpy, GLXDrawable drawable, unsigned long mask);
GdkGLProc    gdk_gl_get_glXSelectEventSGIX (void);
#define      gdk_gl_glXSelectEventSGIX(proc, dpy, drawable, mask) \
  ( ((GdkGLProc_glXSelectEventSGIX) (proc)) (dpy, drawable, mask) )

/* glXGetSelectedEventSGIX */
typedef void ( * GdkGLProc_glXGetSelectedEventSGIX) (Display *dpy, GLXDrawable drawable, unsigned long *mask);
GdkGLProc    gdk_gl_get_glXGetSelectedEventSGIX (void);
#define      gdk_gl_glXGetSelectedEventSGIX(proc, dpy, drawable, mask) \
  ( ((GdkGLProc_glXGetSelectedEventSGIX) (proc)) (dpy, drawable, mask) )

/* proc struct */

typedef struct _GdkGL_GLX_SGIX_pbuffer GdkGL_GLX_SGIX_pbuffer;

struct _GdkGL_GLX_SGIX_pbuffer
{
  GdkGLProc_glXCreateGLXPbufferSGIX glXCreateGLXPbufferSGIX;
  GdkGLProc_glXDestroyGLXPbufferSGIX glXDestroyGLXPbufferSGIX;
  GdkGLProc_glXQueryGLXPbufferSGIX glXQueryGLXPbufferSGIX;
  GdkGLProc_glXSelectEventSGIX glXSelectEventSGIX;
  GdkGLProc_glXGetSelectedEventSGIX glXGetSelectedEventSGIX;
};

GdkGL_GLX_SGIX_pbuffer *gdk_gl_get_GLX_SGIX_pbuffer (GdkGLConfig *glconfig);

/*
 * GLX_SGI_cushion
 */

/* glXCushionSGI */
typedef void ( * GdkGLProc_glXCushionSGI) (Display *dpy, Window window, float cushion);
GdkGLProc    gdk_gl_get_glXCushionSGI (void);
#define      gdk_gl_glXCushionSGI(proc, dpy, window, cushion) \
  ( ((GdkGLProc_glXCushionSGI) (proc)) (dpy, window, cushion) )

/* proc struct */

typedef struct _GdkGL_GLX_SGI_cushion GdkGL_GLX_SGI_cushion;

struct _GdkGL_GLX_SGI_cushion
{
  GdkGLProc_glXCushionSGI glXCushionSGI;
};

GdkGL_GLX_SGI_cushion *gdk_gl_get_GLX_SGI_cushion (GdkGLConfig *glconfig);

/*
 * GLX_SGIX_video_resize
 */

/* glXBindChannelToWindowSGIX */
typedef int ( * GdkGLProc_glXBindChannelToWindowSGIX) (Display *display, int screen, int channel, Window window);
GdkGLProc    gdk_gl_get_glXBindChannelToWindowSGIX (void);
#define      gdk_gl_glXBindChannelToWindowSGIX(proc, display, screen, channel, window) \
  ( ((GdkGLProc_glXBindChannelToWindowSGIX) (proc)) (display, screen, channel, window) )

/* glXChannelRectSGIX */
typedef int ( * GdkGLProc_glXChannelRectSGIX) (Display *display, int screen, int channel, int x, int y, int w, int h);
GdkGLProc    gdk_gl_get_glXChannelRectSGIX (void);
#define      gdk_gl_glXChannelRectSGIX(proc, display, screen, channel, x, y, w, h) \
  ( ((GdkGLProc_glXChannelRectSGIX) (proc)) (display, screen, channel, x, y, w, h) )

/* glXQueryChannelRectSGIX */
typedef int ( * GdkGLProc_glXQueryChannelRectSGIX) (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh);
GdkGLProc    gdk_gl_get_glXQueryChannelRectSGIX (void);
#define      gdk_gl_glXQueryChannelRectSGIX(proc, display, screen, channel, dx, dy, dw, dh) \
  ( ((GdkGLProc_glXQueryChannelRectSGIX) (proc)) (display, screen, channel, dx, dy, dw, dh) )

/* glXQueryChannelDeltasSGIX */
typedef int ( * GdkGLProc_glXQueryChannelDeltasSGIX) (Display *display, int screen, int channel, int *x, int *y, int *w, int *h);
GdkGLProc    gdk_gl_get_glXQueryChannelDeltasSGIX (void);
#define      gdk_gl_glXQueryChannelDeltasSGIX(proc, display, screen, channel, x, y, w, h) \
  ( ((GdkGLProc_glXQueryChannelDeltasSGIX) (proc)) (display, screen, channel, x, y, w, h) )

/* glXChannelRectSyncSGIX */
typedef int ( * GdkGLProc_glXChannelRectSyncSGIX) (Display *display, int screen, int channel, GLenum synctype);
GdkGLProc    gdk_gl_get_glXChannelRectSyncSGIX (void);
#define      gdk_gl_glXChannelRectSyncSGIX(proc, display, screen, channel, synctype) \
  ( ((GdkGLProc_glXChannelRectSyncSGIX) (proc)) (display, screen, channel, synctype) )

/* proc struct */

typedef struct _GdkGL_GLX_SGIX_video_resize GdkGL_GLX_SGIX_video_resize;

struct _GdkGL_GLX_SGIX_video_resize
{
  GdkGLProc_glXBindChannelToWindowSGIX glXBindChannelToWindowSGIX;
  GdkGLProc_glXChannelRectSGIX glXChannelRectSGIX;
  GdkGLProc_glXQueryChannelRectSGIX glXQueryChannelRectSGIX;
  GdkGLProc_glXQueryChannelDeltasSGIX glXQueryChannelDeltasSGIX;
  GdkGLProc_glXChannelRectSyncSGIX glXChannelRectSyncSGIX;
};

GdkGL_GLX_SGIX_video_resize *gdk_gl_get_GLX_SGIX_video_resize (GdkGLConfig *glconfig);

/*
 * GLX_SGIX_dmbuffer
 */

#ifdef _DM_BUFFER_H_

/* glXAssociateDMPbufferSGIX */
typedef Bool ( * GdkGLProc_glXAssociateDMPbufferSGIX) (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer);
GdkGLProc    gdk_gl_get_glXAssociateDMPbufferSGIX (void);
#define      gdk_gl_glXAssociateDMPbufferSGIX(proc, dpy, pbuffer, params, dmbuffer) \
  ( ((GdkGLProc_glXAssociateDMPbufferSGIX) (proc)) (dpy, pbuffer, params, dmbuffer) )

/* proc struct */

typedef struct _GdkGL_GLX_SGIX_dmbuffer GdkGL_GLX_SGIX_dmbuffer;

struct _GdkGL_GLX_SGIX_dmbuffer
{
  GdkGLProc_glXAssociateDMPbufferSGIX glXAssociateDMPbufferSGIX;
};

GdkGL_GLX_SGIX_dmbuffer *gdk_gl_get_GLX_SGIX_dmbuffer (GdkGLConfig *glconfig);

#endif /* _DM_BUFFER_H_ */

/*
 * GLX_SGIX_swap_group
 */

/* glXJoinSwapGroupSGIX */
typedef void ( * GdkGLProc_glXJoinSwapGroupSGIX) (Display *dpy, GLXDrawable drawable, GLXDrawable member);
GdkGLProc    gdk_gl_get_glXJoinSwapGroupSGIX (void);
#define      gdk_gl_glXJoinSwapGroupSGIX(proc, dpy, drawable, member) \
  ( ((GdkGLProc_glXJoinSwapGroupSGIX) (proc)) (dpy, drawable, member) )

/* proc struct */

typedef struct _GdkGL_GLX_SGIX_swap_group GdkGL_GLX_SGIX_swap_group;

struct _GdkGL_GLX_SGIX_swap_group
{
  GdkGLProc_glXJoinSwapGroupSGIX glXJoinSwapGroupSGIX;
};

GdkGL_GLX_SGIX_swap_group *gdk_gl_get_GLX_SGIX_swap_group (GdkGLConfig *glconfig);

/*
 * GLX_SGIX_swap_barrier
 */

/* glXBindSwapBarrierSGIX */
typedef void ( * GdkGLProc_glXBindSwapBarrierSGIX) (Display *dpy, GLXDrawable drawable, int barrier);
GdkGLProc    gdk_gl_get_glXBindSwapBarrierSGIX (void);
#define      gdk_gl_glXBindSwapBarrierSGIX(proc, dpy, drawable, barrier) \
  ( ((GdkGLProc_glXBindSwapBarrierSGIX) (proc)) (dpy, drawable, barrier) )

/* glXQueryMaxSwapBarriersSGIX */
typedef Bool ( * GdkGLProc_glXQueryMaxSwapBarriersSGIX) (Display *dpy, int screen, int *max);
GdkGLProc    gdk_gl_get_glXQueryMaxSwapBarriersSGIX (void);
#define      gdk_gl_glXQueryMaxSwapBarriersSGIX(proc, dpy, screen, max) \
  ( ((GdkGLProc_glXQueryMaxSwapBarriersSGIX) (proc)) (dpy, screen, max) )

/* proc struct */

typedef struct _GdkGL_GLX_SGIX_swap_barrier GdkGL_GLX_SGIX_swap_barrier;

struct _GdkGL_GLX_SGIX_swap_barrier
{
  GdkGLProc_glXBindSwapBarrierSGIX glXBindSwapBarrierSGIX;
  GdkGLProc_glXQueryMaxSwapBarriersSGIX glXQueryMaxSwapBarriersSGIX;
};

GdkGL_GLX_SGIX_swap_barrier *gdk_gl_get_GLX_SGIX_swap_barrier (GdkGLConfig *glconfig);

/*
 * GLX_SUN_get_transparent_index
 */

/* glXGetTransparentIndexSUN */
typedef Status ( * GdkGLProc_glXGetTransparentIndexSUN) (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex);
GdkGLProc    gdk_gl_get_glXGetTransparentIndexSUN (void);
#define      gdk_gl_glXGetTransparentIndexSUN(proc, dpy, overlay, underlay, pTransparentIndex) \
  ( ((GdkGLProc_glXGetTransparentIndexSUN) (proc)) (dpy, overlay, underlay, pTransparentIndex) )

/* proc struct */

typedef struct _GdkGL_GLX_SUN_get_transparent_index GdkGL_GLX_SUN_get_transparent_index;

struct _GdkGL_GLX_SUN_get_transparent_index
{
  GdkGLProc_glXGetTransparentIndexSUN glXGetTransparentIndexSUN;
};

GdkGL_GLX_SUN_get_transparent_index *gdk_gl_get_GLX_SUN_get_transparent_index (GdkGLConfig *glconfig);

/*
 * GLX_MESA_copy_sub_buffer
 */

/* glXCopySubBufferMESA */
typedef void ( * GdkGLProc_glXCopySubBufferMESA) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height);
GdkGLProc    gdk_gl_get_glXCopySubBufferMESA (void);
#define      gdk_gl_glXCopySubBufferMESA(proc, dpy, drawable, x, y, width, height) \
  ( ((GdkGLProc_glXCopySubBufferMESA) (proc)) (dpy, drawable, x, y, width, height) )

/* proc struct */

typedef struct _GdkGL_GLX_MESA_copy_sub_buffer GdkGL_GLX_MESA_copy_sub_buffer;

struct _GdkGL_GLX_MESA_copy_sub_buffer
{
  GdkGLProc_glXCopySubBufferMESA glXCopySubBufferMESA;
};

GdkGL_GLX_MESA_copy_sub_buffer *gdk_gl_get_GLX_MESA_copy_sub_buffer (GdkGLConfig *glconfig);

/*
 * GLX_MESA_pixmap_colormap
 */

/* glXCreateGLXPixmapMESA */
typedef GLXPixmap ( * GdkGLProc_glXCreateGLXPixmapMESA) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap);
GdkGLProc    gdk_gl_get_glXCreateGLXPixmapMESA (void);
#define      gdk_gl_glXCreateGLXPixmapMESA(proc, dpy, visual, pixmap, cmap) \
  ( ((GdkGLProc_glXCreateGLXPixmapMESA) (proc)) (dpy, visual, pixmap, cmap) )

/* proc struct */

typedef struct _GdkGL_GLX_MESA_pixmap_colormap GdkGL_GLX_MESA_pixmap_colormap;

struct _GdkGL_GLX_MESA_pixmap_colormap
{
  GdkGLProc_glXCreateGLXPixmapMESA glXCreateGLXPixmapMESA;
};

GdkGL_GLX_MESA_pixmap_colormap *gdk_gl_get_GLX_MESA_pixmap_colormap (GdkGLConfig *glconfig);

/*
 * GLX_MESA_release_buffers
 */

/* glXReleaseBuffersMESA */
typedef Bool ( * GdkGLProc_glXReleaseBuffersMESA) (Display *dpy, GLXDrawable drawable);
GdkGLProc    gdk_gl_get_glXReleaseBuffersMESA (void);
#define      gdk_gl_glXReleaseBuffersMESA(proc, dpy, drawable) \
  ( ((GdkGLProc_glXReleaseBuffersMESA) (proc)) (dpy, drawable) )

/* proc struct */

typedef struct _GdkGL_GLX_MESA_release_buffers GdkGL_GLX_MESA_release_buffers;

struct _GdkGL_GLX_MESA_release_buffers
{
  GdkGLProc_glXReleaseBuffersMESA glXReleaseBuffersMESA;
};

GdkGL_GLX_MESA_release_buffers *gdk_gl_get_GLX_MESA_release_buffers (GdkGLConfig *glconfig);

/*
 * GLX_MESA_set_3dfx_mode
 */

/* glXSet3DfxModeMESA */
typedef Bool ( * GdkGLProc_glXSet3DfxModeMESA) (int mode);
GdkGLProc    gdk_gl_get_glXSet3DfxModeMESA (void);
#define      gdk_gl_glXSet3DfxModeMESA(proc, mode) \
  ( ((GdkGLProc_glXSet3DfxModeMESA) (proc)) (mode) )

/* proc struct */

typedef struct _GdkGL_GLX_MESA_set_3dfx_mode GdkGL_GLX_MESA_set_3dfx_mode;

struct _GdkGL_GLX_MESA_set_3dfx_mode
{
  GdkGLProc_glXSet3DfxModeMESA glXSet3DfxModeMESA;
};

GdkGL_GLX_MESA_set_3dfx_mode *gdk_gl_get_GLX_MESA_set_3dfx_mode (GdkGLConfig *glconfig);

/*
 * GLX_OML_sync_control
 */

/* glXGetSyncValuesOML */
typedef Bool ( * GdkGLProc_glXGetSyncValuesOML) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc);
GdkGLProc    gdk_gl_get_glXGetSyncValuesOML (void);
#define      gdk_gl_glXGetSyncValuesOML(proc, dpy, drawable, ust, msc, sbc) \
  ( ((GdkGLProc_glXGetSyncValuesOML) (proc)) (dpy, drawable, ust, msc, sbc) )

/* glXGetMscRateOML */
typedef Bool ( * GdkGLProc_glXGetMscRateOML) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator);
GdkGLProc    gdk_gl_get_glXGetMscRateOML (void);
#define      gdk_gl_glXGetMscRateOML(proc, dpy, drawable, numerator, denominator) \
  ( ((GdkGLProc_glXGetMscRateOML) (proc)) (dpy, drawable, numerator, denominator) )

/* glXSwapBuffersMscOML */
typedef int64_t ( * GdkGLProc_glXSwapBuffersMscOML) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder);
GdkGLProc    gdk_gl_get_glXSwapBuffersMscOML (void);
#define      gdk_gl_glXSwapBuffersMscOML(proc, dpy, drawable, target_msc, divisor, remainder) \
  ( ((GdkGLProc_glXSwapBuffersMscOML) (proc)) (dpy, drawable, target_msc, divisor, remainder) )

/* glXWaitForMscOML */
typedef Bool ( * GdkGLProc_glXWaitForMscOML) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc);
GdkGLProc    gdk_gl_get_glXWaitForMscOML (void);
#define      gdk_gl_glXWaitForMscOML(proc, dpy, drawable, target_msc, divisor, remainder, ust, msc, sbc) \
  ( ((GdkGLProc_glXWaitForMscOML) (proc)) (dpy, drawable, target_msc, divisor, remainder, ust, msc, sbc) )

/* glXWaitForSbcOML */
typedef Bool ( * GdkGLProc_glXWaitForSbcOML) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc);
GdkGLProc    gdk_gl_get_glXWaitForSbcOML (void);
#define      gdk_gl_glXWaitForSbcOML(proc, dpy, drawable, target_sbc, ust, msc, sbc) \
  ( ((GdkGLProc_glXWaitForSbcOML) (proc)) (dpy, drawable, target_sbc, ust, msc, sbc) )

/* proc struct */

typedef struct _GdkGL_GLX_OML_sync_control GdkGL_GLX_OML_sync_control;

struct _GdkGL_GLX_OML_sync_control
{
  GdkGLProc_glXGetSyncValuesOML glXGetSyncValuesOML;
  GdkGLProc_glXGetMscRateOML glXGetMscRateOML;
  GdkGLProc_glXSwapBuffersMscOML glXSwapBuffersMscOML;
  GdkGLProc_glXWaitForMscOML glXWaitForMscOML;
  GdkGLProc_glXWaitForSbcOML glXWaitForSbcOML;
};

GdkGL_GLX_OML_sync_control *gdk_gl_get_GLX_OML_sync_control (GdkGLConfig *glconfig);

/*
 * GLX_SGIX_hyperpipe
 */

/* glXQueryHyperpipeNetworkSGIX */
typedef GLXHyperpipeNetworkSGIX * ( * GdkGLProc_glXQueryHyperpipeNetworkSGIX) (Display *dpy, int *npipes);
GdkGLProc    gdk_gl_get_glXQueryHyperpipeNetworkSGIX (void);
#define      gdk_gl_glXQueryHyperpipeNetworkSGIX(proc, dpy, npipes) \
  ( ((GdkGLProc_glXQueryHyperpipeNetworkSGIX) (proc)) (dpy, npipes) )

/* glXHyperpipeConfigSGIX */
typedef int ( * GdkGLProc_glXHyperpipeConfigSGIX) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId);
GdkGLProc    gdk_gl_get_glXHyperpipeConfigSGIX (void);
#define      gdk_gl_glXHyperpipeConfigSGIX(proc, dpy, networkId, npipes, cfg, hpId) \
  ( ((GdkGLProc_glXHyperpipeConfigSGIX) (proc)) (dpy, networkId, npipes, cfg, hpId) )

/* glXQueryHyperpipeConfigSGIX */
typedef GLXHyperpipeConfigSGIX * ( * GdkGLProc_glXQueryHyperpipeConfigSGIX) (Display *dpy, int hpId, int *npipes);
GdkGLProc    gdk_gl_get_glXQueryHyperpipeConfigSGIX (void);
#define      gdk_gl_glXQueryHyperpipeConfigSGIX(proc, dpy, hpId, npipes) \
  ( ((GdkGLProc_glXQueryHyperpipeConfigSGIX) (proc)) (dpy, hpId, npipes) )

/* glXDestroyHyperpipeConfigSGIX */
typedef int ( * GdkGLProc_glXDestroyHyperpipeConfigSGIX) (Display *dpy, int hpId);
GdkGLProc    gdk_gl_get_glXDestroyHyperpipeConfigSGIX (void);
#define      gdk_gl_glXDestroyHyperpipeConfigSGIX(proc, dpy, hpId) \
  ( ((GdkGLProc_glXDestroyHyperpipeConfigSGIX) (proc)) (dpy, hpId) )

/* glXBindHyperpipeSGIX */
typedef int ( * GdkGLProc_glXBindHyperpipeSGIX) (Display *dpy, int hpId);
GdkGLProc    gdk_gl_get_glXBindHyperpipeSGIX (void);
#define      gdk_gl_glXBindHyperpipeSGIX(proc, dpy, hpId) \
  ( ((GdkGLProc_glXBindHyperpipeSGIX) (proc)) (dpy, hpId) )

/* glXQueryHyperpipeBestAttribSGIX */
typedef int ( * GdkGLProc_glXQueryHyperpipeBestAttribSGIX) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList);
GdkGLProc    gdk_gl_get_glXQueryHyperpipeBestAttribSGIX (void);
#define      gdk_gl_glXQueryHyperpipeBestAttribSGIX(proc, dpy, timeSlice, attrib, size, attribList, returnAttribList) \
  ( ((GdkGLProc_glXQueryHyperpipeBestAttribSGIX) (proc)) (dpy, timeSlice, attrib, size, attribList, returnAttribList) )

/* glXHyperpipeAttribSGIX */
typedef int ( * GdkGLProc_glXHyperpipeAttribSGIX) (Display *dpy, int timeSlice, int attrib, int size, void *attribList);
GdkGLProc    gdk_gl_get_glXHyperpipeAttribSGIX (void);
#define      gdk_gl_glXHyperpipeAttribSGIX(proc, dpy, timeSlice, attrib, size, attribList) \
  ( ((GdkGLProc_glXHyperpipeAttribSGIX) (proc)) (dpy, timeSlice, attrib, size, attribList) )

/* glXQueryHyperpipeAttribSGIX */
typedef int ( * GdkGLProc_glXQueryHyperpipeAttribSGIX) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList);
GdkGLProc    gdk_gl_get_glXQueryHyperpipeAttribSGIX (void);
#define      gdk_gl_glXQueryHyperpipeAttribSGIX(proc, dpy, timeSlice, attrib, size, returnAttribList) \
  ( ((GdkGLProc_glXQueryHyperpipeAttribSGIX) (proc)) (dpy, timeSlice, attrib, size, returnAttribList) )

/* proc struct */

typedef struct _GdkGL_GLX_SGIX_hyperpipe GdkGL_GLX_SGIX_hyperpipe;

struct _GdkGL_GLX_SGIX_hyperpipe
{
  GdkGLProc_glXQueryHyperpipeNetworkSGIX glXQueryHyperpipeNetworkSGIX;
  GdkGLProc_glXHyperpipeConfigSGIX glXHyperpipeConfigSGIX;
  GdkGLProc_glXQueryHyperpipeConfigSGIX glXQueryHyperpipeConfigSGIX;
  GdkGLProc_glXDestroyHyperpipeConfigSGIX glXDestroyHyperpipeConfigSGIX;
  GdkGLProc_glXBindHyperpipeSGIX glXBindHyperpipeSGIX;
  GdkGLProc_glXQueryHyperpipeBestAttribSGIX glXQueryHyperpipeBestAttribSGIX;
  GdkGLProc_glXHyperpipeAttribSGIX glXHyperpipeAttribSGIX;
  GdkGLProc_glXQueryHyperpipeAttribSGIX glXQueryHyperpipeAttribSGIX;
};

GdkGL_GLX_SGIX_hyperpipe *gdk_gl_get_GLX_SGIX_hyperpipe (GdkGLConfig *glconfig);

/*
 * GLX_MESA_agp_offset
 */

/* glXGetAGPOffsetMESA */
typedef unsigned int ( * GdkGLProc_glXGetAGPOffsetMESA) (const void *pointer);
GdkGLProc    gdk_gl_get_glXGetAGPOffsetMESA (void);
#define      gdk_gl_glXGetAGPOffsetMESA(proc, pointer) \
  ( ((GdkGLProc_glXGetAGPOffsetMESA) (proc)) (pointer) )

/* proc struct */

typedef struct _GdkGL_GLX_MESA_agp_offset GdkGL_GLX_MESA_agp_offset;

struct _GdkGL_GLX_MESA_agp_offset
{
  GdkGLProc_glXGetAGPOffsetMESA glXGetAGPOffsetMESA;
};

GdkGL_GLX_MESA_agp_offset *gdk_gl_get_GLX_MESA_agp_offset (GdkGLConfig *glconfig);

/*
 * GLX_EXT_texture_from_pixmap
 */

/* glXBindTexImageEXT */
typedef void ( * GdkGLProc_glXBindTexImageEXT) (Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
GdkGLProc    gdk_gl_get_glXBindTexImageEXT (void);
#define      gdk_gl_glXBindTexImageEXT(proc, dpy, drawable, buffer, attrib_list) \
  ( ((GdkGLProc_glXBindTexImageEXT) (proc)) (dpy, drawable, buffer, attrib_list) )

/* glXReleaseTexImageEXT */
typedef void ( * GdkGLProc_glXReleaseTexImageEXT) (Display *dpy, GLXDrawable drawable, int buffer);
GdkGLProc    gdk_gl_get_glXReleaseTexImageEXT (void);
#define      gdk_gl_glXReleaseTexImageEXT(proc, dpy, drawable, buffer) \
  ( ((GdkGLProc_glXReleaseTexImageEXT) (proc)) (dpy, drawable, buffer) )

/* proc struct */

typedef struct _GdkGL_GLX_EXT_texture_from_pixmap GdkGL_GLX_EXT_texture_from_pixmap;

struct _GdkGL_GLX_EXT_texture_from_pixmap
{
  GdkGLProc_glXBindTexImageEXT glXBindTexImageEXT;
  GdkGLProc_glXReleaseTexImageEXT glXReleaseTexImageEXT;
};

GdkGL_GLX_EXT_texture_from_pixmap *gdk_gl_get_GLX_EXT_texture_from_pixmap (GdkGLConfig *glconfig);

/*
 * GLX_NV_present_video
 */

/* glXEnumerateVideoDevicesNV */
typedef unsigned int * ( * GdkGLProc_glXEnumerateVideoDevicesNV) (Display *dpy, int screen, int *nelements);
GdkGLProc    gdk_gl_get_glXEnumerateVideoDevicesNV (void);
#define      gdk_gl_glXEnumerateVideoDevicesNV(proc, dpy, screen, nelements) \
  ( ((GdkGLProc_glXEnumerateVideoDevicesNV) (proc)) (dpy, screen, nelements) )

/* glXBindVideoDeviceNV */
typedef int ( * GdkGLProc_glXBindVideoDeviceNV) (Display *dpy, unsigned int video_slot, unsigned int video_device, const int *attrib_list);
GdkGLProc    gdk_gl_get_glXBindVideoDeviceNV (void);
#define      gdk_gl_glXBindVideoDeviceNV(proc, dpy, video_slot, video_device, attrib_list) \
  ( ((GdkGLProc_glXBindVideoDeviceNV) (proc)) (dpy, video_slot, video_device, attrib_list) )

/* proc struct */

typedef struct _GdkGL_GLX_NV_present_video GdkGL_GLX_NV_present_video;

struct _GdkGL_GLX_NV_present_video
{
  GdkGLProc_glXEnumerateVideoDevicesNV glXEnumerateVideoDevicesNV;
  GdkGLProc_glXBindVideoDeviceNV glXBindVideoDeviceNV;
};

GdkGL_GLX_NV_present_video *gdk_gl_get_GLX_NV_present_video (GdkGLConfig *glconfig);

/*
 * GLX_NV_video_output
 */

/* glXGetVideoDeviceNV */
typedef int ( * GdkGLProc_glXGetVideoDeviceNV) (Display *dpy, int screen, int numVideoDevices, GLXVideoDeviceNV *pVideoDevice);
GdkGLProc    gdk_gl_get_glXGetVideoDeviceNV (void);
#define      gdk_gl_glXGetVideoDeviceNV(proc, dpy, screen, numVideoDevices, pVideoDevice) \
  ( ((GdkGLProc_glXGetVideoDeviceNV) (proc)) (dpy, screen, numVideoDevices, pVideoDevice) )

/* glXReleaseVideoDeviceNV */
typedef int ( * GdkGLProc_glXReleaseVideoDeviceNV) (Display *dpy, int screen, GLXVideoDeviceNV VideoDevice);
GdkGLProc    gdk_gl_get_glXReleaseVideoDeviceNV (void);
#define      gdk_gl_glXReleaseVideoDeviceNV(proc, dpy, screen, VideoDevice) \
  ( ((GdkGLProc_glXReleaseVideoDeviceNV) (proc)) (dpy, screen, VideoDevice) )

/* glXBindVideoImageNV */
typedef int ( * GdkGLProc_glXBindVideoImageNV) (Display *dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer);
GdkGLProc    gdk_gl_get_glXBindVideoImageNV (void);
#define      gdk_gl_glXBindVideoImageNV(proc, dpy, VideoDevice, pbuf, iVideoBuffer) \
  ( ((GdkGLProc_glXBindVideoImageNV) (proc)) (dpy, VideoDevice, pbuf, iVideoBuffer) )

/* glXReleaseVideoImageNV */
typedef int ( * GdkGLProc_glXReleaseVideoImageNV) (Display *dpy, GLXPbuffer pbuf);
GdkGLProc    gdk_gl_get_glXReleaseVideoImageNV (void);
#define      gdk_gl_glXReleaseVideoImageNV(proc, dpy, pbuf) \
  ( ((GdkGLProc_glXReleaseVideoImageNV) (proc)) (dpy, pbuf) )

/* glXSendPbufferToVideoNV */
typedef int ( * GdkGLProc_glXSendPbufferToVideoNV) (Display *dpy, GLXPbuffer pbuf, int iBufferType, unsigned long *pulCounterPbuffer, GLboolean bBlock);
GdkGLProc    gdk_gl_get_glXSendPbufferToVideoNV (void);
#define      gdk_gl_glXSendPbufferToVideoNV(proc, dpy, pbuf, iBufferType, pulCounterPbuffer, bBlock) \
  ( ((GdkGLProc_glXSendPbufferToVideoNV) (proc)) (dpy, pbuf, iBufferType, pulCounterPbuffer, bBlock) )

/* glXGetVideoInfoNV */
typedef int ( * GdkGLProc_glXGetVideoInfoNV) (Display *dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
GdkGLProc    gdk_gl_get_glXGetVideoInfoNV (void);
#define      gdk_gl_glXGetVideoInfoNV(proc, dpy, screen, VideoDevice, pulCounterOutputPbuffer, pulCounterOutputVideo) \
  ( ((GdkGLProc_glXGetVideoInfoNV) (proc)) (dpy, screen, VideoDevice, pulCounterOutputPbuffer, pulCounterOutputVideo) )

/* proc struct */

typedef struct _GdkGL_GLX_NV_video_output GdkGL_GLX_NV_video_output;

struct _GdkGL_GLX_NV_video_output
{
  GdkGLProc_glXGetVideoDeviceNV glXGetVideoDeviceNV;
  GdkGLProc_glXReleaseVideoDeviceNV glXReleaseVideoDeviceNV;
  GdkGLProc_glXBindVideoImageNV glXBindVideoImageNV;
  GdkGLProc_glXReleaseVideoImageNV glXReleaseVideoImageNV;
  GdkGLProc_glXSendPbufferToVideoNV glXSendPbufferToVideoNV;
  GdkGLProc_glXGetVideoInfoNV glXGetVideoInfoNV;
};

GdkGL_GLX_NV_video_output *gdk_gl_get_GLX_NV_video_output (GdkGLConfig *glconfig);

/*
 * GLX_NV_swap_group
 */

/* glXJoinSwapGroupNV */
typedef Bool ( * GdkGLProc_glXJoinSwapGroupNV) (Display *dpy, GLXDrawable drawable, GLuint group);
GdkGLProc    gdk_gl_get_glXJoinSwapGroupNV (void);
#define      gdk_gl_glXJoinSwapGroupNV(proc, dpy, drawable, group) \
  ( ((GdkGLProc_glXJoinSwapGroupNV) (proc)) (dpy, drawable, group) )

/* glXBindSwapBarrierNV */
typedef Bool ( * GdkGLProc_glXBindSwapBarrierNV) (Display *dpy, GLuint group, GLuint barrier);
GdkGLProc    gdk_gl_get_glXBindSwapBarrierNV (void);
#define      gdk_gl_glXBindSwapBarrierNV(proc, dpy, group, barrier) \
  ( ((GdkGLProc_glXBindSwapBarrierNV) (proc)) (dpy, group, barrier) )

/* glXQuerySwapGroupNV */
typedef Bool ( * GdkGLProc_glXQuerySwapGroupNV) (Display *dpy, GLXDrawable drawable, GLuint *group, GLuint *barrier);
GdkGLProc    gdk_gl_get_glXQuerySwapGroupNV (void);
#define      gdk_gl_glXQuerySwapGroupNV(proc, dpy, drawable, group, barrier) \
  ( ((GdkGLProc_glXQuerySwapGroupNV) (proc)) (dpy, drawable, group, barrier) )

/* glXQueryMaxSwapGroupsNV */
typedef Bool ( * GdkGLProc_glXQueryMaxSwapGroupsNV) (Display *dpy, int screen, GLuint *maxGroups, GLuint *maxBarriers);
GdkGLProc    gdk_gl_get_glXQueryMaxSwapGroupsNV (void);
#define      gdk_gl_glXQueryMaxSwapGroupsNV(proc, dpy, screen, maxGroups, maxBarriers) \
  ( ((GdkGLProc_glXQueryMaxSwapGroupsNV) (proc)) (dpy, screen, maxGroups, maxBarriers) )

/* glXQueryFrameCountNV */
typedef Bool ( * GdkGLProc_glXQueryFrameCountNV) (Display *dpy, int screen, GLuint *count);
GdkGLProc    gdk_gl_get_glXQueryFrameCountNV (void);
#define      gdk_gl_glXQueryFrameCountNV(proc, dpy, screen, count) \
  ( ((GdkGLProc_glXQueryFrameCountNV) (proc)) (dpy, screen, count) )

/* glXResetFrameCountNV */
typedef Bool ( * GdkGLProc_glXResetFrameCountNV) (Display *dpy, int screen);
GdkGLProc    gdk_gl_get_glXResetFrameCountNV (void);
#define      gdk_gl_glXResetFrameCountNV(proc, dpy, screen) \
  ( ((GdkGLProc_glXResetFrameCountNV) (proc)) (dpy, screen) )

/* proc struct */

typedef struct _GdkGL_GLX_NV_swap_group GdkGL_GLX_NV_swap_group;

struct _GdkGL_GLX_NV_swap_group
{
  GdkGLProc_glXJoinSwapGroupNV glXJoinSwapGroupNV;
  GdkGLProc_glXBindSwapBarrierNV glXBindSwapBarrierNV;
  GdkGLProc_glXQuerySwapGroupNV glXQuerySwapGroupNV;
  GdkGLProc_glXQueryMaxSwapGroupsNV glXQueryMaxSwapGroupsNV;
  GdkGLProc_glXQueryFrameCountNV glXQueryFrameCountNV;
  GdkGLProc_glXResetFrameCountNV glXResetFrameCountNV;
};

GdkGL_GLX_NV_swap_group *gdk_gl_get_GLX_NV_swap_group (GdkGLConfig *glconfig);

/*
 * GLX_NV_video_capture
 */

/* glXBindVideoCaptureDeviceNV */
typedef int ( * GdkGLProc_glXBindVideoCaptureDeviceNV) (Display *dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device);
GdkGLProc    gdk_gl_get_glXBindVideoCaptureDeviceNV (void);
#define      gdk_gl_glXBindVideoCaptureDeviceNV(proc, dpy, video_capture_slot, device) \
  ( ((GdkGLProc_glXBindVideoCaptureDeviceNV) (proc)) (dpy, video_capture_slot, device) )

/* glXEnumerateVideoCaptureDevicesNV */
typedef GLXVideoCaptureDeviceNV * ( * GdkGLProc_glXEnumerateVideoCaptureDevicesNV) (Display *dpy, int screen, int *nelements);
GdkGLProc    gdk_gl_get_glXEnumerateVideoCaptureDevicesNV (void);
#define      gdk_gl_glXEnumerateVideoCaptureDevicesNV(proc, dpy, screen, nelements) \
  ( ((GdkGLProc_glXEnumerateVideoCaptureDevicesNV) (proc)) (dpy, screen, nelements) )

/* glXLockVideoCaptureDeviceNV */
typedef void ( * GdkGLProc_glXLockVideoCaptureDeviceNV) (Display *dpy, GLXVideoCaptureDeviceNV device);
GdkGLProc    gdk_gl_get_glXLockVideoCaptureDeviceNV (void);
#define      gdk_gl_glXLockVideoCaptureDeviceNV(proc, dpy, device) \
  ( ((GdkGLProc_glXLockVideoCaptureDeviceNV) (proc)) (dpy, device) )

/* glXQueryVideoCaptureDeviceNV */
typedef int ( * GdkGLProc_glXQueryVideoCaptureDeviceNV) (Display *dpy, GLXVideoCaptureDeviceNV device, int attribute, int *value);
GdkGLProc    gdk_gl_get_glXQueryVideoCaptureDeviceNV (void);
#define      gdk_gl_glXQueryVideoCaptureDeviceNV(proc, dpy, device, attribute, value) \
  ( ((GdkGLProc_glXQueryVideoCaptureDeviceNV) (proc)) (dpy, device, attribute, value) )

/* glXReleaseVideoCaptureDeviceNV */
typedef void ( * GdkGLProc_glXReleaseVideoCaptureDeviceNV) (Display *dpy, GLXVideoCaptureDeviceNV device);
GdkGLProc    gdk_gl_get_glXReleaseVideoCaptureDeviceNV (void);
#define      gdk_gl_glXReleaseVideoCaptureDeviceNV(proc, dpy, device) \
  ( ((GdkGLProc_glXReleaseVideoCaptureDeviceNV) (proc)) (dpy, device) )

/* proc struct */

typedef struct _GdkGL_GLX_NV_video_capture GdkGL_GLX_NV_video_capture;

struct _GdkGL_GLX_NV_video_capture
{
  GdkGLProc_glXBindVideoCaptureDeviceNV glXBindVideoCaptureDeviceNV;
  GdkGLProc_glXEnumerateVideoCaptureDevicesNV glXEnumerateVideoCaptureDevicesNV;
  GdkGLProc_glXLockVideoCaptureDeviceNV glXLockVideoCaptureDeviceNV;
  GdkGLProc_glXQueryVideoCaptureDeviceNV glXQueryVideoCaptureDeviceNV;
  GdkGLProc_glXReleaseVideoCaptureDeviceNV glXReleaseVideoCaptureDeviceNV;
};

GdkGL_GLX_NV_video_capture *gdk_gl_get_GLX_NV_video_capture (GdkGLConfig *glconfig);

/*
 * GLX_NV_copy_image
 */

/* glXCopyImageSubDataNV */
typedef void ( * GdkGLProc_glXCopyImageSubDataNV) (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);
GdkGLProc    gdk_gl_get_glXCopyImageSubDataNV (void);
#define      gdk_gl_glXCopyImageSubDataNV(proc, dpy, srcCtx, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstCtx, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth) \
  ( ((GdkGLProc_glXCopyImageSubDataNV) (proc)) (dpy, srcCtx, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstCtx, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth) )

/* proc struct */

typedef struct _GdkGL_GLX_NV_copy_image GdkGL_GLX_NV_copy_image;

struct _GdkGL_GLX_NV_copy_image
{
  GdkGLProc_glXCopyImageSubDataNV glXCopyImageSubDataNV;
};

GdkGL_GLX_NV_copy_image *gdk_gl_get_GLX_NV_copy_image (GdkGLConfig *glconfig);

/*
 * GLX_NV_vertex_array_range
 */

/* glXAllocateMemoryNV */
typedef void * ( * GdkGLProc_glXAllocateMemoryNV) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
GdkGLProc    gdk_gl_get_glXAllocateMemoryNV (void);
#define      gdk_gl_glXAllocateMemoryNV(proc, size, readfreq, writefreq, priority) \
  ( ((GdkGLProc_glXAllocateMemoryNV) (proc)) (size, readfreq, writefreq, priority) )

/* glXFreeMemoryNV */
typedef void ( * GdkGLProc_glXFreeMemoryNV) (void *pointer);
GdkGLProc    gdk_gl_get_glXFreeMemoryNV (void);
#define      gdk_gl_glXFreeMemoryNV(proc, pointer) \
  ( ((GdkGLProc_glXFreeMemoryNV) (proc)) (pointer) )

/* proc struct */

typedef struct _GdkGL_GLX_NV_vertex_array_range GdkGL_GLX_NV_vertex_array_range;

struct _GdkGL_GLX_NV_vertex_array_range
{
  GdkGLProc_glXAllocateMemoryNV glXAllocateMemoryNV;
  GdkGLProc_glXFreeMemoryNV glXFreeMemoryNV;
};

GdkGL_GLX_NV_vertex_array_range *gdk_gl_get_GLX_NV_vertex_array_range (GdkGLConfig *glconfig);

G_END_DECLS

#endif /* __GDK_GL_GLXEXT_H__ */
