/* DO NOT EDIT - This file generated automatically by glX_proto_send.py (from Mesa) script */

/*
 * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
 * (C) Copyright IBM Corporation 2004
 * All Rights Reserved.
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sub license,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice (including the next
 * paragraph) shall be included in all copies or substantial portions of the
 * Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
 * PRECISION INSIGHT, IBM,
 * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

#if !defined( _INDIRECT_H_ )
#  define _INDIRECT_H_

/**
 * \file
 * Prototypes for indirect rendering functions.
 *
 * \author Kevin E. Martin <kevin@precisioninsight.com>
 * \author Ian Romanick <idr@us.ibm.com>
 */

#  if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) && defined(__ELF__)
#    define HIDDEN  __attribute__((visibility("hidden")))
#  else
#    define HIDDEN
#  endif
#  if defined(__i386__) && defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)
#    define FASTCALL __attribute__((fastcall))
#  else
#    define FASTCALL
#  endif
#  if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
#    define NOINLINE __attribute__((noinline))
#  else
#    define NOINLINE
#  endif

#include "glxclient.h"

extern HIDDEN NOINLINE CARD32 __glXReadReply( Display *dpy, size_t size,
    void * dest, GLboolean reply_is_always_array );

extern HIDDEN NOINLINE void __glXReadPixelReply( Display *dpy,
    __GLXcontext * gc, unsigned max_dim, GLint width, GLint height,
    GLint depth, GLenum format, GLenum type, void * dest,
    GLboolean dimensions_in_reply );

extern HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupSingleRequest(
    __GLXcontext * gc, GLint sop, GLint cmdlen );

extern HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupVendorRequest(
    __GLXcontext * gc, GLint code, GLint vop, GLint cmdlen );

extern HIDDEN void __indirect_glNewList(GLuint list, GLenum mode);
extern HIDDEN void __indirect_glEndList(void);
extern HIDDEN void __indirect_glCallList(GLuint list);
extern HIDDEN void __indirect_glCallLists(GLsizei n, GLenum type, const GLvoid * lists);
extern HIDDEN void __indirect_glDeleteLists(GLuint list, GLsizei range);
extern HIDDEN GLuint __indirect_glGenLists(GLsizei range);
extern HIDDEN void __indirect_glListBase(GLuint base);
extern HIDDEN void __indirect_glBegin(GLenum mode);
extern HIDDEN void __indirect_glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap);
extern HIDDEN void __indirect_glColor3b(GLbyte red, GLbyte green, GLbyte blue);
extern HIDDEN void __indirect_glColor3bv(const GLbyte * v);
extern HIDDEN void __indirect_glColor3d(GLdouble red, GLdouble green, GLdouble blue);
extern HIDDEN void __indirect_glColor3dv(const GLdouble * v);
extern HIDDEN void __indirect_glColor3f(GLfloat red, GLfloat green, GLfloat blue);
extern HIDDEN void __indirect_glColor3fv(const GLfloat * v);
extern HIDDEN void __indirect_glColor3i(GLint red, GLint green, GLint blue);
extern HIDDEN void __indirect_glColor3iv(const GLint * v);
extern HIDDEN void __indirect_glColor3s(GLshort red, GLshort green, GLshort blue);
extern HIDDEN void __indirect_glColor3sv(const GLshort * v);
extern HIDDEN void __indirect_glColor3ub(GLubyte red, GLubyte green, GLubyte blue);
extern HIDDEN void __indirect_glColor3ubv(const GLubyte * v);
extern HIDDEN void __indirect_glColor3ui(GLuint red, GLuint green, GLuint blue);
extern HIDDEN void __indirect_glColor3uiv(const GLuint * v);
extern HIDDEN void __indirect_glColor3us(GLushort red, GLushort green, GLushort blue);
extern HIDDEN void __indirect_glColor3usv(const GLushort * v);
extern HIDDEN void __indirect_glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
extern HIDDEN void __indirect_glColor4bv(const GLbyte * v);
extern HIDDEN void __indirect_glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
extern HIDDEN void __indirect_glColor4dv(const GLdouble * v);
extern HIDDEN void __indirect_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
extern HIDDEN void __indirect_glColor4fv(const GLfloat * v);
extern HIDDEN void __indirect_glColor4i(GLint red, GLint green, GLint blue, GLint alpha);
extern HIDDEN void __indirect_glColor4iv(const GLint * v);
extern HIDDEN void __indirect_glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha);
extern HIDDEN void __indirect_glColor4sv(const GLshort * v);
extern HIDDEN void __indirect_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
extern HIDDEN void __indirect_glColor4ubv(const GLubyte * v);
extern HIDDEN void __indirect_glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha);
extern HIDDEN void __indirect_glColor4uiv(const GLuint * v);
extern HIDDEN void __indirect_glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha);
extern HIDDEN void __indirect_glColor4usv(const GLushort * v);
extern HIDDEN void __indirect_glEdgeFlag(GLboolean flag);
extern HIDDEN void __indirect_glEdgeFlagv(const GLboolean * flag);
extern HIDDEN void __indirect_glEnd(void);
extern HIDDEN void __indirect_glIndexd(GLdouble c);
extern HIDDEN void __indirect_glIndexdv(const GLdouble * c);
extern HIDDEN void __indirect_glIndexf(GLfloat c);
extern HIDDEN void __indirect_glIndexfv(const GLfloat * c);
extern HIDDEN void __indirect_glIndexi(GLint c);
extern HIDDEN void __indirect_glIndexiv(const GLint * c);
extern HIDDEN void __indirect_glIndexs(GLshort c);
extern HIDDEN void __indirect_glIndexsv(const GLshort * c);
extern HIDDEN void __indirect_glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz);
extern HIDDEN void __indirect_glNormal3bv(const GLbyte * v);
extern HIDDEN void __indirect_glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz);
extern HIDDEN void __indirect_glNormal3dv(const GLdouble * v);
extern HIDDEN void __indirect_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz);
extern HIDDEN void __indirect_glNormal3fv(const GLfloat * v);
extern HIDDEN void __indirect_glNormal3i(GLint nx, GLint ny, GLint nz);
extern HIDDEN void __indirect_glNormal3iv(const GLint * v);
extern HIDDEN void __indirect_glNormal3s(GLshort nx, GLshort ny, GLshort nz);
extern HIDDEN void __indirect_glNormal3sv(const GLshort * v);
extern HIDDEN void __indirect_glRasterPos2d(GLdouble x, GLdouble y);
extern HIDDEN void __indirect_glRasterPos2dv(const GLdouble * v);
extern HIDDEN void __indirect_glRasterPos2f(GLfloat x, GLfloat y);
extern HIDDEN void __indirect_glRasterPos2fv(const GLfloat * v);
extern HIDDEN void __indirect_glRasterPos2i(GLint x, GLint y);
extern HIDDEN void __indirect_glRasterPos2iv(const GLint * v);
extern HIDDEN void __indirect_glRasterPos2s(GLshort x, GLshort y);
extern HIDDEN void __indirect_glRasterPos2sv(const GLshort * v);
extern HIDDEN void __indirect_glRasterPos3d(GLdouble x, GLdouble y, GLdouble z);
extern HIDDEN void __indirect_glRasterPos3dv(const GLdouble * v);
extern HIDDEN void __indirect_glRasterPos3f(GLfloat x, GLfloat y, GLfloat z);
extern HIDDEN void __indirect_glRasterPos3fv(const GLfloat * v);
extern HIDDEN void __indirect_glRasterPos3i(GLint x, GLint y, GLint z);
extern HIDDEN void __indirect_glRasterPos3iv(const GLint * v);
extern HIDDEN void __indirect_glRasterPos3s(GLshort x, GLshort y, GLshort z);
extern HIDDEN void __indirect_glRasterPos3sv(const GLshort * v);
extern HIDDEN void __indirect_glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
extern HIDDEN void __indirect_glRasterPos4dv(const GLdouble * v);
extern HIDDEN void __indirect_glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
extern HIDDEN void __indirect_glRasterPos4fv(const GLfloat * v);
extern HIDDEN void __indirect_glRasterPos4i(GLint x, GLint y, GLint z, GLint w);
extern HIDDEN void __indirect_glRasterPos4iv(const GLint * v);
extern HIDDEN void __indirect_glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w);
extern HIDDEN void __indirect_glRasterPos4sv(const GLshort * v);
extern HIDDEN void __indirect_glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
extern HIDDEN void __indirect_glRectdv(const GLdouble * v1, const GLdouble * v2);
extern HIDDEN void __indirect_glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
extern HIDDEN void __indirect_glRectfv(const GLfloat * v1, const GLfloat * v2);
extern HIDDEN void __indirect_glRecti(GLint x1, GLint y1, GLint x2, GLint y2);
extern HIDDEN void __indirect_glRectiv(const GLint * v1, const GLint * v2);
extern HIDDEN void __indirect_glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
extern HIDDEN void __indirect_glRectsv(const GLshort * v1, const GLshort * v2);
extern HIDDEN void __indirect_glTexCoord1d(GLdouble s);
extern HIDDEN void __indirect_glTexCoord1dv(const GLdouble * v);
extern HIDDEN void __indirect_glTexCoord1f(GLfloat s);
extern HIDDEN void __indirect_glTexCoord1fv(const GLfloat * v);
extern HIDDEN void __indirect_glTexCoord1i(GLint s);
extern HIDDEN void __indirect_glTexCoord1iv(const GLint * v);
extern HIDDEN void __indirect_glTexCoord1s(GLshort s);
extern HIDDEN void __indirect_glTexCoord1sv(const GLshort * v);
extern HIDDEN void __indirect_glTexCoord2d(GLdouble s, GLdouble t);
extern HIDDEN void __indirect_glTexCoord2dv(const GLdouble * v);
extern HIDDEN void __indirect_glTexCoord2f(GLfloat s, GLfloat t);
extern HIDDEN void __indirect_glTexCoord2fv(const GLfloat * v);
extern HIDDEN void __indirect_glTexCoord2i(GLint s, GLint t);
extern HIDDEN void __indirect_glTexCoord2iv(const GLint * v);
extern HIDDEN void __indirect_glTexCoord2s(GLshort s, GLshort t);
extern HIDDEN void __indirect_glTexCoord2sv(const GLshort * v);
extern HIDDEN void __indirect_glTexCoord3d(GLdouble s, GLdouble t, GLdouble r);
extern HIDDEN void __indirect_glTexCoord3dv(const GLdouble * v);
extern HIDDEN void __indirect_glTexCoord3f(GLfloat s, GLfloat t, GLfloat r);
extern HIDDEN void __indirect_glTexCoord3fv(const GLfloat * v);
extern HIDDEN void __indirect_glTexCoord3i(GLint s, GLint t, GLint r);
extern HIDDEN void __indirect_glTexCoord3iv(const GLint * v);
extern HIDDEN void __indirect_glTexCoord3s(GLshort s, GLshort t, GLshort r);
extern HIDDEN void __indirect_glTexCoord3sv(const GLshort * v);
extern HIDDEN void __indirect_glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
extern HIDDEN void __indirect_glTexCoord4dv(const GLdouble * v);
extern HIDDEN void __indirect_glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
extern HIDDEN void __indirect_glTexCoord4fv(const GLfloat * v);
extern HIDDEN void __indirect_glTexCoord4i(GLint s, GLint t, GLint r, GLint q);
extern HIDDEN void __indirect_glTexCoord4iv(const GLint * v);
extern HIDDEN void __indirect_glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q);
extern HIDDEN void __indirect_glTexCoord4sv(const GLshort * v);
extern HIDDEN void __indirect_glVertex2d(GLdouble x, GLdouble y);
extern HIDDEN void __indirect_glVertex2dv(const GLdouble * v);
extern HIDDEN void __indirect_glVertex2f(GLfloat x, GLfloat y);
extern HIDDEN void __indirect_glVertex2fv(const GLfloat * v);
extern HIDDEN void __indirect_glVertex2i(GLint x, GLint y);
extern HIDDEN void __indirect_glVertex2iv(const GLint * v);
extern HIDDEN void __indirect_glVertex2s(GLshort x, GLshort y);
extern HIDDEN void __indirect_glVertex2sv(const GLshort * v);
extern HIDDEN void __indirect_glVertex3d(GLdouble x, GLdouble y, GLdouble z);
extern HIDDEN void __indirect_glVertex3dv(const GLdouble * v);
extern HIDDEN void __indirect_glVertex3f(GLfloat x, GLfloat y, GLfloat z);
extern HIDDEN void __indirect_glVertex3fv(const GLfloat * v);
extern HIDDEN void __indirect_glVertex3i(GLint x, GLint y, GLint z);
extern HIDDEN void __indirect_glVertex3iv(const GLint * v);
extern HIDDEN void __indirect_glVertex3s(GLshort x, GLshort y, GLshort z);
extern HIDDEN void __indirect_glVertex3sv(const GLshort * v);
extern HIDDEN void __indirect_glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
extern HIDDEN void __indirect_glVertex4dv(const GLdouble * v);
extern HIDDEN void __indirect_glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
extern HIDDEN void __indirect_glVertex4fv(const GLfloat * v);
extern HIDDEN void __indirect_glVertex4i(GLint x, GLint y, GLint z, GLint w);
extern HIDDEN void __indirect_glVertex4iv(const GLint * v);
extern HIDDEN void __indirect_glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w);
extern HIDDEN void __indirect_glVertex4sv(const GLshort * v);
extern HIDDEN void __indirect_glClipPlane(GLenum plane, const GLdouble * equation);
extern HIDDEN void __indirect_glColorMaterial(GLenum face, GLenum mode);
extern HIDDEN void __indirect_glCullFace(GLenum mode);
extern HIDDEN void __indirect_glFogf(GLenum pname, GLfloat param);
extern HIDDEN void __indirect_glFogfv(GLenum pname, const GLfloat * params);
extern HIDDEN void __indirect_glFogi(GLenum pname, GLint param);
extern HIDDEN void __indirect_glFogiv(GLenum pname, const GLint * params);
extern HIDDEN void __indirect_glFrontFace(GLenum mode);
extern HIDDEN void __indirect_glHint(GLenum target, GLenum mode);
extern HIDDEN void __indirect_glLightf(GLenum light, GLenum pname, GLfloat param);
extern HIDDEN void __indirect_glLightfv(GLenum light, GLenum pname, const GLfloat * params);
extern HIDDEN void __indirect_glLighti(GLenum light, GLenum pname, GLint param);
extern HIDDEN void __indirect_glLightiv(GLenum light, GLenum pname, const GLint * params);
extern HIDDEN void __indirect_glLightModelf(GLenum pname, GLfloat param);
extern HIDDEN void __indirect_glLightModelfv(GLenum pname, const GLfloat * params);
extern HIDDEN void __indirect_glLightModeli(GLenum pname, GLint param);
extern HIDDEN void __indirect_glLightModeliv(GLenum pname, const GLint * params);
extern HIDDEN void __indirect_glLineStipple(GLint factor, GLushort pattern);
extern HIDDEN void __indirect_glLineWidth(GLfloat width);
extern HIDDEN void __indirect_glMaterialf(GLenum face, GLenum pname, GLfloat param);
extern HIDDEN void __indirect_glMaterialfv(GLenum face, GLenum pname, const GLfloat * params);
extern HIDDEN void __indirect_glMateriali(GLenum face, GLenum pname, GLint param);
extern HIDDEN void __indirect_glMaterialiv(GLenum face, GLenum pname, const GLint * params);
extern HIDDEN void __indirect_glPointSize(GLfloat size);
extern HIDDEN void __indirect_glPolygonMode(GLenum face, GLenum mode);
extern HIDDEN void __indirect_glPolygonStipple(const GLubyte * mask);
extern HIDDEN void __indirect_glScissor(GLint x, GLint y, GLsizei width, GLsizei height);
extern HIDDEN void __indirect_glShadeModel(GLenum mode);
extern HIDDEN void __indirect_glTexParameterf(GLenum target, GLenum pname, GLfloat param);
extern HIDDEN void __indirect_glTexParameterfv(GLenum target, GLenum pname, const GLfloat * params);
extern HIDDEN void __indirect_glTexParameteri(GLenum target, GLenum pname, GLint param);
extern HIDDEN void __indirect_glTexParameteriv(GLenum target, GLenum pname, const GLint * params);
extern HIDDEN void __indirect_glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels);
extern HIDDEN void __indirect_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels);
extern HIDDEN void __indirect_glTexEnvf(GLenum target, GLenum pname, GLfloat param);
extern HIDDEN void __indirect_glTexEnvfv(GLenum target, GLenum pname, const GLfloat * params);
extern HIDDEN void __indirect_glTexEnvi(GLenum target, GLenum pname, GLint param);
extern HIDDEN void __indirect_glTexEnviv(GLenum target, GLenum pname, const GLint * params);
extern HIDDEN void __indirect_glTexGend(GLenum coord, GLenum pname, GLdouble param);
extern HIDDEN void __indirect_glTexGendv(GLenum coord, GLenum pname, const GLdouble * params);
extern HIDDEN void __indirect_glTexGenf(GLenum coord, GLenum pname, GLfloat param);
extern HIDDEN void __indirect_glTexGenfv(GLenum coord, GLenum pname, const GLfloat * params);
extern HIDDEN void __indirect_glTexGeni(GLenum coord, GLenum pname, GLint param);
extern HIDDEN void __indirect_glTexGeniv(GLenum coord, GLenum pname, const GLint * params);
extern HIDDEN void __indirect_glFeedbackBuffer(GLsizei size, GLenum type, GLfloat * buffer);
extern HIDDEN void __indirect_glSelectBuffer(GLsizei size, GLuint * buffer);
extern HIDDEN GLint __indirect_glRenderMode(GLenum mode);
extern HIDDEN void __indirect_glInitNames(void);
extern HIDDEN void __indirect_glLoadName(GLuint name);
extern HIDDEN void __indirect_glPassThrough(GLfloat token);
extern HIDDEN void __indirect_glPopName(void);
extern HIDDEN void __indirect_glPushName(GLuint name);
extern HIDDEN void __indirect_glDrawBuffer(GLenum mode);
extern HIDDEN void __indirect_glClear(GLbitfield mask);
extern HIDDEN void __indirect_glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
extern HIDDEN void __indirect_glClearIndex(GLfloat c);
extern HIDDEN void __indirect_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
extern HIDDEN void __indirect_glClearStencil(GLint s);
extern HIDDEN void __indirect_glClearDepth(GLclampd depth);
extern HIDDEN void __indirect_glStencilMask(GLuint mask);
extern HIDDEN void __indirect_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
extern HIDDEN void __indirect_glDepthMask(GLboolean flag);
extern HIDDEN void __indirect_glIndexMask(GLuint mask);
extern HIDDEN void __indirect_glAccum(GLenum op, GLfloat value);
extern HIDDEN void __indirect_glDisable(GLenum cap);
extern HIDDEN void __indirect_glEnable(GLenum cap);
extern HIDDEN void __indirect_glFinish(void);
extern HIDDEN void __indirect_glFlush(void);
extern HIDDEN void __indirect_glPopAttrib(void);
extern HIDDEN void __indirect_glPushAttrib(GLbitfield mask);
extern HIDDEN void __indirect_glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points);
extern HIDDEN void __indirect_glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points);
extern HIDDEN void __indirect_glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points);
extern HIDDEN void __indirect_glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points);
extern HIDDEN void __indirect_glMapGrid1d(GLint un, GLdouble u1, GLdouble u2);
extern HIDDEN void __indirect_glMapGrid1f(GLint un, GLfloat u1, GLfloat u2);
extern HIDDEN void __indirect_glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
extern HIDDEN void __indirect_glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
extern HIDDEN void __indirect_glEvalCoord1d(GLdouble u);
extern HIDDEN void __indirect_glEvalCoord1dv(const GLdouble * u);
extern HIDDEN void __indirect_glEvalCoord1f(GLfloat u);
extern HIDDEN void __indirect_glEvalCoord1fv(const GLfloat * u);
extern HIDDEN void __indirect_glEvalCoord2d(GLdouble u, GLdouble v);
extern HIDDEN void __indirect_glEvalCoord2dv(const GLdouble * u);
extern HIDDEN void __indirect_glEvalCoord2f(GLfloat u, GLfloat v);
extern HIDDEN void __indirect_glEvalCoord2fv(const GLfloat * u);
extern HIDDEN void __indirect_glEvalMesh1(GLenum mode, GLint i1, GLint i2);
extern HIDDEN void __indirect_glEvalPoint1(GLint i);
extern HIDDEN void __indirect_glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
extern HIDDEN void __indirect_glEvalPoint2(GLint i, GLint j);
extern HIDDEN void __indirect_glAlphaFunc(GLenum func, GLclampf ref);
extern HIDDEN void __indirect_glBlendFunc(GLenum sfactor, GLenum dfactor);
extern HIDDEN void __indirect_glLogicOp(GLenum opcode);
extern HIDDEN void __indirect_glStencilFunc(GLenum func, GLint ref, GLuint mask);
extern HIDDEN void __indirect_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass);
extern HIDDEN void __indirect_glDepthFunc(GLenum func);
extern HIDDEN void __indirect_glPixelZoom(GLfloat xfactor, GLfloat yfactor);
extern HIDDEN void __indirect_glPixelTransferf(GLenum pname, GLfloat param);
extern HIDDEN void __indirect_glPixelTransferi(GLenum pname, GLint param);
extern HIDDEN void __indirect_glPixelStoref(GLenum pname, GLfloat param);
extern HIDDEN void __indirect_glPixelStorei(GLenum pname, GLint param);
extern HIDDEN void __indirect_glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat * values);
extern HIDDEN void __indirect_glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint * values);
extern HIDDEN void __indirect_glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort * values);
extern HIDDEN void __indirect_glReadBuffer(GLenum mode);
extern HIDDEN void __indirect_glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
extern HIDDEN void __indirect_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * pixels);
extern HIDDEN void __indirect_glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels);
extern HIDDEN void __indirect_glGetBooleanv(GLenum pname, GLboolean * params);
extern HIDDEN void __indirect_glGetClipPlane(GLenum plane, GLdouble * equation);
extern HIDDEN void __indirect_glGetDoublev(GLenum pname, GLdouble * params);
extern HIDDEN GLenum __indirect_glGetError(void);
extern HIDDEN void __indirect_glGetFloatv(GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetIntegerv(GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetLightfv(GLenum light, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetLightiv(GLenum light, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetMapdv(GLenum target, GLenum query, GLdouble * v);
extern HIDDEN void __indirect_glGetMapfv(GLenum target, GLenum query, GLfloat * v);
extern HIDDEN void __indirect_glGetMapiv(GLenum target, GLenum query, GLint * v);
extern HIDDEN void __indirect_glGetMaterialfv(GLenum face, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetMaterialiv(GLenum face, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetPixelMapfv(GLenum map, GLfloat * values);
extern HIDDEN void __indirect_glGetPixelMapuiv(GLenum map, GLuint * values);
extern HIDDEN void __indirect_glGetPixelMapusv(GLenum map, GLushort * values);
extern HIDDEN void __indirect_glGetPolygonStipple(GLubyte * mask);
extern HIDDEN const GLubyte * __indirect_glGetString(GLenum name);
extern HIDDEN void __indirect_glGetTexEnvfv(GLenum target, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetTexEnviv(GLenum target, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetTexGendv(GLenum coord, GLenum pname, GLdouble * params);
extern HIDDEN void __indirect_glGetTexGenfv(GLenum coord, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetTexGeniv(GLenum coord, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels);
extern HIDDEN void __indirect_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetTexParameteriv(GLenum target, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint * params);
extern HIDDEN GLboolean __indirect_glIsEnabled(GLenum cap);
extern HIDDEN GLboolean __indirect_glIsList(GLuint list);
extern HIDDEN void __indirect_glDepthRange(GLclampd zNear, GLclampd zFar);
extern HIDDEN void __indirect_glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
extern HIDDEN void __indirect_glLoadIdentity(void);
extern HIDDEN void __indirect_glLoadMatrixf(const GLfloat * m);
extern HIDDEN void __indirect_glLoadMatrixd(const GLdouble * m);
extern HIDDEN void __indirect_glMatrixMode(GLenum mode);
extern HIDDEN void __indirect_glMultMatrixf(const GLfloat * m);
extern HIDDEN void __indirect_glMultMatrixd(const GLdouble * m);
extern HIDDEN void __indirect_glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
extern HIDDEN void __indirect_glPopMatrix(void);
extern HIDDEN void __indirect_glPushMatrix(void);
extern HIDDEN void __indirect_glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
extern HIDDEN void __indirect_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
extern HIDDEN void __indirect_glScaled(GLdouble x, GLdouble y, GLdouble z);
extern HIDDEN void __indirect_glScalef(GLfloat x, GLfloat y, GLfloat z);
extern HIDDEN void __indirect_glTranslated(GLdouble x, GLdouble y, GLdouble z);
extern HIDDEN void __indirect_glTranslatef(GLfloat x, GLfloat y, GLfloat z);
extern HIDDEN void __indirect_glViewport(GLint x, GLint y, GLsizei width, GLsizei height);
extern HIDDEN void __indirect_glArrayElement(GLint i);
extern HIDDEN void __indirect_glBindTexture(GLenum target, GLuint texture);
extern HIDDEN void __indirect_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
extern HIDDEN void __indirect_glDisableClientState(GLenum array);
extern HIDDEN void __indirect_glDrawArrays(GLenum mode, GLint first, GLsizei count);
extern HIDDEN void __indirect_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices);
extern HIDDEN void __indirect_glEdgeFlagPointer(GLsizei stride, const GLvoid * pointer);
extern HIDDEN void __indirect_glEnableClientState(GLenum array);
extern HIDDEN void __indirect_glIndexPointer(GLenum type, GLsizei stride, const GLvoid * pointer);
extern HIDDEN void __indirect_glIndexub(GLubyte c);
extern HIDDEN void __indirect_glIndexubv(const GLubyte * c);
extern HIDDEN void __indirect_glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid * pointer);
extern HIDDEN void __indirect_glNormalPointer(GLenum type, GLsizei stride, const GLvoid * pointer);
extern HIDDEN void __indirect_glPolygonOffset(GLfloat factor, GLfloat units);
extern HIDDEN void __indirect_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
extern HIDDEN void __indirect_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
extern HIDDEN GLboolean __indirect_glAreTexturesResident(GLsizei n, const GLuint * textures, GLboolean * residences);
GLAPI GLboolean GLAPIENTRY glAreTexturesResidentEXT(GLsizei n, const GLuint * textures, GLboolean * residences);
extern HIDDEN void __indirect_glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
extern HIDDEN void __indirect_glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
extern HIDDEN void __indirect_glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
extern HIDDEN void __indirect_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
extern HIDDEN void __indirect_glDeleteTextures(GLsizei n, const GLuint * textures);
GLAPI void GLAPIENTRY glDeleteTexturesEXT(GLsizei n, const GLuint * textures);
extern HIDDEN void __indirect_glGenTextures(GLsizei n, GLuint * textures);
GLAPI void GLAPIENTRY glGenTexturesEXT(GLsizei n, GLuint * textures);
extern HIDDEN void __indirect_glGetPointerv(GLenum pname, GLvoid ** params);
extern HIDDEN GLboolean __indirect_glIsTexture(GLuint texture);
GLAPI GLboolean GLAPIENTRY glIsTextureEXT(GLuint texture);
extern HIDDEN void __indirect_glPrioritizeTextures(GLsizei n, const GLuint * textures, const GLclampf * priorities);
extern HIDDEN void __indirect_glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels);
extern HIDDEN void __indirect_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels);
extern HIDDEN void __indirect_glPopClientAttrib(void);
extern HIDDEN void __indirect_glPushClientAttrib(GLbitfield mask);
extern HIDDEN void __indirect_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
extern HIDDEN void __indirect_glBlendEquation(GLenum mode);
extern HIDDEN void __indirect_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices);
extern HIDDEN void __indirect_glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table);
extern HIDDEN void __indirect_glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat * params);
extern HIDDEN void __indirect_glColorTableParameteriv(GLenum target, GLenum pname, const GLint * params);
extern HIDDEN void __indirect_glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
extern HIDDEN void __indirect_glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid * table);
GLAPI void GLAPIENTRY glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid * table);
extern HIDDEN void __indirect_glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat * params);
GLAPI void GLAPIENTRY glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetColorTableParameteriv(GLenum target, GLenum pname, GLint * params);
GLAPI void GLAPIENTRY glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data);
extern HIDDEN void __indirect_glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
extern HIDDEN void __indirect_glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image);
extern HIDDEN void __indirect_glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image);
extern HIDDEN void __indirect_glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params);
extern HIDDEN void __indirect_glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat * params);
extern HIDDEN void __indirect_glConvolutionParameteri(GLenum target, GLenum pname, GLint params);
extern HIDDEN void __indirect_glConvolutionParameteriv(GLenum target, GLenum pname, const GLint * params);
extern HIDDEN void __indirect_glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
extern HIDDEN void __indirect_glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
extern HIDDEN void __indirect_glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid * image);
extern HIDDEN void gl_dispatch_stub_356(GLenum target, GLenum format, GLenum type, GLvoid * image);
extern HIDDEN void __indirect_glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat * params);
extern HIDDEN void gl_dispatch_stub_357(GLenum target, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint * params);
extern HIDDEN void gl_dispatch_stub_358(GLenum target, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);
extern HIDDEN void gl_dispatch_stub_359(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);
extern HIDDEN void __indirect_glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column);
extern HIDDEN void __indirect_glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
extern HIDDEN void gl_dispatch_stub_361(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
extern HIDDEN void __indirect_glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat * params);
extern HIDDEN void gl_dispatch_stub_362(GLenum target, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetHistogramParameteriv(GLenum target, GLenum pname, GLint * params);
extern HIDDEN void gl_dispatch_stub_363(GLenum target, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
extern HIDDEN void gl_dispatch_stub_364(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
extern HIDDEN void __indirect_glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat * params);
extern HIDDEN void gl_dispatch_stub_365(GLenum target, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint * params);
extern HIDDEN void gl_dispatch_stub_366(GLenum target, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
extern HIDDEN void __indirect_glMinmax(GLenum target, GLenum internalformat, GLboolean sink);
extern HIDDEN void __indirect_glResetHistogram(GLenum target);
extern HIDDEN void __indirect_glResetMinmax(GLenum target);
extern HIDDEN void __indirect_glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels);
extern HIDDEN void __indirect_glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels);
extern HIDDEN void __indirect_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
extern HIDDEN void __indirect_glActiveTextureARB(GLenum texture);
extern HIDDEN void __indirect_glClientActiveTextureARB(GLenum texture);
extern HIDDEN void __indirect_glMultiTexCoord1dARB(GLenum target, GLdouble s);
extern HIDDEN void __indirect_glMultiTexCoord1dvARB(GLenum target, const GLdouble * v);
extern HIDDEN void __indirect_glMultiTexCoord1fARB(GLenum target, GLfloat s);
extern HIDDEN void __indirect_glMultiTexCoord1fvARB(GLenum target, const GLfloat * v);
extern HIDDEN void __indirect_glMultiTexCoord1iARB(GLenum target, GLint s);
extern HIDDEN void __indirect_glMultiTexCoord1ivARB(GLenum target, const GLint * v);
extern HIDDEN void __indirect_glMultiTexCoord1sARB(GLenum target, GLshort s);
extern HIDDEN void __indirect_glMultiTexCoord1svARB(GLenum target, const GLshort * v);
extern HIDDEN void __indirect_glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t);
extern HIDDEN void __indirect_glMultiTexCoord2dvARB(GLenum target, const GLdouble * v);
extern HIDDEN void __indirect_glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t);
extern HIDDEN void __indirect_glMultiTexCoord2fvARB(GLenum target, const GLfloat * v);
extern HIDDEN void __indirect_glMultiTexCoord2iARB(GLenum target, GLint s, GLint t);
extern HIDDEN void __indirect_glMultiTexCoord2ivARB(GLenum target, const GLint * v);
extern HIDDEN void __indirect_glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t);
extern HIDDEN void __indirect_glMultiTexCoord2svARB(GLenum target, const GLshort * v);
extern HIDDEN void __indirect_glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r);
extern HIDDEN void __indirect_glMultiTexCoord3dvARB(GLenum target, const GLdouble * v);
extern HIDDEN void __indirect_glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r);
extern HIDDEN void __indirect_glMultiTexCoord3fvARB(GLenum target, const GLfloat * v);
extern HIDDEN void __indirect_glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r);
extern HIDDEN void __indirect_glMultiTexCoord3ivARB(GLenum target, const GLint * v);
extern HIDDEN void __indirect_glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r);
extern HIDDEN void __indirect_glMultiTexCoord3svARB(GLenum target, const GLshort * v);
extern HIDDEN void __indirect_glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
extern HIDDEN void __indirect_glMultiTexCoord4dvARB(GLenum target, const GLdouble * v);
extern HIDDEN void __indirect_glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
extern HIDDEN void __indirect_glMultiTexCoord4fvARB(GLenum target, const GLfloat * v);
extern HIDDEN void __indirect_glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q);
extern HIDDEN void __indirect_glMultiTexCoord4ivARB(GLenum target, const GLint * v);
extern HIDDEN void __indirect_glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
extern HIDDEN void __indirect_glMultiTexCoord4svARB(GLenum target, const GLshort * v);
extern HIDDEN void __indirect_glLoadTransposeMatrixdARB(const GLdouble * m);
extern HIDDEN void __indirect_glLoadTransposeMatrixfARB(const GLfloat * m);
extern HIDDEN void __indirect_glMultTransposeMatrixdARB(const GLdouble * m);
extern HIDDEN void __indirect_glMultTransposeMatrixfARB(const GLfloat * m);
extern HIDDEN void __indirect_glSampleCoverageARB(GLclampf value, GLboolean invert);
extern HIDDEN void __indirect_glCompressedTexImage1DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data);
extern HIDDEN void __indirect_glCompressedTexImage2DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data);
extern HIDDEN void __indirect_glCompressedTexImage3DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data);
extern HIDDEN void __indirect_glCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data);
extern HIDDEN void __indirect_glCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data);
extern HIDDEN void __indirect_glCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data);
extern HIDDEN void __indirect_glGetCompressedTexImageARB(GLenum target, GLint level, GLvoid * img);
extern HIDDEN void __indirect_glDisableVertexAttribArrayARB(GLuint index);
extern HIDDEN void __indirect_glEnableVertexAttribArrayARB(GLuint index);
extern HIDDEN void __indirect_glGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble * params);
extern HIDDEN void __indirect_glGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat * params);
extern HIDDEN void __indirect_glGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble * params);
extern HIDDEN void __indirect_glGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat * params);
extern HIDDEN void __indirect_glGetProgramStringARB(GLenum target, GLenum pname, GLvoid * string);
extern HIDDEN void __indirect_glGetProgramivARB(GLenum target, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble * params);
extern HIDDEN void __indirect_glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetVertexAttribivARB(GLuint index, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
extern HIDDEN void __indirect_glProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble * params);
extern HIDDEN void __indirect_glProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
extern HIDDEN void __indirect_glProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat * params);
extern HIDDEN void __indirect_glProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
extern HIDDEN void __indirect_glProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble * params);
extern HIDDEN void __indirect_glProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
extern HIDDEN void __indirect_glProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat * params);
extern HIDDEN void __indirect_glProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid * string);
extern HIDDEN void __indirect_glVertexAttrib1dARB(GLuint index, GLdouble x);
extern HIDDEN void __indirect_glVertexAttrib1dvARB(GLuint index, const GLdouble * v);
extern HIDDEN void __indirect_glVertexAttrib1fARB(GLuint index, GLfloat x);
extern HIDDEN void __indirect_glVertexAttrib1fvARB(GLuint index, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttrib1sARB(GLuint index, GLshort x);
extern HIDDEN void __indirect_glVertexAttrib1svARB(GLuint index, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y);
extern HIDDEN void __indirect_glVertexAttrib2dvARB(GLuint index, const GLdouble * v);
extern HIDDEN void __indirect_glVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y);
extern HIDDEN void __indirect_glVertexAttrib2fvARB(GLuint index, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttrib2sARB(GLuint index, GLshort x, GLshort y);
extern HIDDEN void __indirect_glVertexAttrib2svARB(GLuint index, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z);
extern HIDDEN void __indirect_glVertexAttrib3dvARB(GLuint index, const GLdouble * v);
extern HIDDEN void __indirect_glVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z);
extern HIDDEN void __indirect_glVertexAttrib3fvARB(GLuint index, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z);
extern HIDDEN void __indirect_glVertexAttrib3svARB(GLuint index, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttrib4NbvARB(GLuint index, const GLbyte * v);
extern HIDDEN void __indirect_glVertexAttrib4NivARB(GLuint index, const GLint * v);
extern HIDDEN void __indirect_glVertexAttrib4NsvARB(GLuint index, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
extern HIDDEN void __indirect_glVertexAttrib4NubvARB(GLuint index, const GLubyte * v);
extern HIDDEN void __indirect_glVertexAttrib4NuivARB(GLuint index, const GLuint * v);
extern HIDDEN void __indirect_glVertexAttrib4NusvARB(GLuint index, const GLushort * v);
extern HIDDEN void __indirect_glVertexAttrib4bvARB(GLuint index, const GLbyte * v);
extern HIDDEN void __indirect_glVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
extern HIDDEN void __indirect_glVertexAttrib4dvARB(GLuint index, const GLdouble * v);
extern HIDDEN void __indirect_glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
extern HIDDEN void __indirect_glVertexAttrib4fvARB(GLuint index, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttrib4ivARB(GLuint index, const GLint * v);
extern HIDDEN void __indirect_glVertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
extern HIDDEN void __indirect_glVertexAttrib4svARB(GLuint index, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttrib4ubvARB(GLuint index, const GLubyte * v);
extern HIDDEN void __indirect_glVertexAttrib4uivARB(GLuint index, const GLuint * v);
extern HIDDEN void __indirect_glVertexAttrib4usvARB(GLuint index, const GLushort * v);
extern HIDDEN void __indirect_glVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer);
extern HIDDEN void __indirect_glBeginQueryARB(GLenum target, GLuint id);
extern HIDDEN void __indirect_glDeleteQueriesARB(GLsizei n, const GLuint * ids);
extern HIDDEN void __indirect_glEndQueryARB(GLenum target);
extern HIDDEN void __indirect_glGenQueriesARB(GLsizei n, GLuint * ids);
extern HIDDEN void __indirect_glGetQueryObjectivARB(GLuint id, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint * params);
extern HIDDEN void __indirect_glGetQueryivARB(GLenum target, GLenum pname, GLint * params);
extern HIDDEN GLboolean __indirect_glIsQueryARB(GLuint id);
extern HIDDEN void __indirect_glDrawBuffersARB(GLsizei n, const GLenum * bufs);
extern HIDDEN void __indirect_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
extern HIDDEN void __indirect_glSampleMaskSGIS(GLclampf value, GLboolean invert);
extern HIDDEN void __indirect_glSamplePatternSGIS(GLenum pattern);
extern HIDDEN void __indirect_glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
extern HIDDEN void __indirect_glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean * pointer);
extern HIDDEN void __indirect_glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
extern HIDDEN void __indirect_glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
extern HIDDEN void __indirect_glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
extern HIDDEN void __indirect_glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
extern HIDDEN void __indirect_glPointParameterfEXT(GLenum pname, GLfloat param);
extern HIDDEN void __indirect_glPointParameterfvEXT(GLenum pname, const GLfloat * params);
extern HIDDEN void __indirect_glSecondaryColor3bEXT(GLbyte red, GLbyte green, GLbyte blue);
extern HIDDEN void __indirect_glSecondaryColor3bvEXT(const GLbyte * v);
extern HIDDEN void __indirect_glSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue);
extern HIDDEN void __indirect_glSecondaryColor3dvEXT(const GLdouble * v);
extern HIDDEN void __indirect_glSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue);
extern HIDDEN void __indirect_glSecondaryColor3fvEXT(const GLfloat * v);
extern HIDDEN void __indirect_glSecondaryColor3iEXT(GLint red, GLint green, GLint blue);
extern HIDDEN void __indirect_glSecondaryColor3ivEXT(const GLint * v);
extern HIDDEN void __indirect_glSecondaryColor3sEXT(GLshort red, GLshort green, GLshort blue);
extern HIDDEN void __indirect_glSecondaryColor3svEXT(const GLshort * v);
extern HIDDEN void __indirect_glSecondaryColor3ubEXT(GLubyte red, GLubyte green, GLubyte blue);
extern HIDDEN void __indirect_glSecondaryColor3ubvEXT(const GLubyte * v);
extern HIDDEN void __indirect_glSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue);
extern HIDDEN void __indirect_glSecondaryColor3uivEXT(const GLuint * v);
extern HIDDEN void __indirect_glSecondaryColor3usEXT(GLushort red, GLushort green, GLushort blue);
extern HIDDEN void __indirect_glSecondaryColor3usvEXT(const GLushort * v);
extern HIDDEN void __indirect_glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
extern HIDDEN void __indirect_glMultiDrawArraysEXT(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount);
extern HIDDEN void __indirect_glMultiDrawElementsEXT(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount);
extern HIDDEN void __indirect_glFogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid * pointer);
extern HIDDEN void __indirect_glFogCoorddEXT(GLdouble coord);
extern HIDDEN void __indirect_glFogCoorddvEXT(const GLdouble * coord);
extern HIDDEN void __indirect_glFogCoordfEXT(GLfloat coord);
extern HIDDEN void __indirect_glFogCoordfvEXT(const GLfloat * coord);
extern HIDDEN void __indirect_glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
extern HIDDEN void __indirect_glWindowPos2dMESA(GLdouble x, GLdouble y);
extern HIDDEN void __indirect_glWindowPos2dvMESA(const GLdouble * v);
extern HIDDEN void __indirect_glWindowPos2fMESA(GLfloat x, GLfloat y);
extern HIDDEN void __indirect_glWindowPos2fvMESA(const GLfloat * v);
extern HIDDEN void __indirect_glWindowPos2iMESA(GLint x, GLint y);
extern HIDDEN void __indirect_glWindowPos2ivMESA(const GLint * v);
extern HIDDEN void __indirect_glWindowPos2sMESA(GLshort x, GLshort y);
extern HIDDEN void __indirect_glWindowPos2svMESA(const GLshort * v);
extern HIDDEN void __indirect_glWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z);
extern HIDDEN void __indirect_glWindowPos3dvMESA(const GLdouble * v);
extern HIDDEN void __indirect_glWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z);
extern HIDDEN void __indirect_glWindowPos3fvMESA(const GLfloat * v);
extern HIDDEN void __indirect_glWindowPos3iMESA(GLint x, GLint y, GLint z);
extern HIDDEN void __indirect_glWindowPos3ivMESA(const GLint * v);
extern HIDDEN void __indirect_glWindowPos3sMESA(GLshort x, GLshort y, GLshort z);
extern HIDDEN void __indirect_glWindowPos3svMESA(const GLshort * v);
extern HIDDEN GLboolean __indirect_glAreProgramsResidentNV(GLsizei n, const GLuint * ids, GLboolean * residences);
extern HIDDEN void __indirect_glBindProgramNV(GLenum target, GLuint program);
extern HIDDEN void __indirect_glDeleteProgramsNV(GLsizei n, const GLuint * programs);
extern HIDDEN void __indirect_glExecuteProgramNV(GLenum target, GLuint id, const GLfloat * params);
extern HIDDEN void __indirect_glGenProgramsNV(GLsizei n, GLuint * programs);
extern HIDDEN void __indirect_glGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble * params);
extern HIDDEN void __indirect_glGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetProgramStringNV(GLuint id, GLenum pname, GLubyte * program);
extern HIDDEN void __indirect_glGetProgramivNV(GLuint id, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetVertexAttribPointervNV(GLuint index, GLenum pname, GLvoid ** pointer);
extern HIDDEN void __indirect_glGetVertexAttribdvNV(GLuint index, GLenum pname, GLdouble * params);
extern HIDDEN void __indirect_glGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat * params);
extern HIDDEN void __indirect_glGetVertexAttribivNV(GLuint index, GLenum pname, GLint * params);
extern HIDDEN GLboolean __indirect_glIsProgramNV(GLuint program);
extern HIDDEN void __indirect_glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte * program);
extern HIDDEN void __indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint num, const GLdouble * params);
extern HIDDEN void __indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLuint num, const GLfloat * params);
extern HIDDEN void __indirect_glRequestResidentProgramsNV(GLsizei n, const GLuint * ids);
extern HIDDEN void __indirect_glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform);
extern HIDDEN void __indirect_glVertexAttrib1dNV(GLuint index, GLdouble x);
extern HIDDEN void __indirect_glVertexAttrib1dvNV(GLuint index, const GLdouble * v);
extern HIDDEN void __indirect_glVertexAttrib1fNV(GLuint index, GLfloat x);
extern HIDDEN void __indirect_glVertexAttrib1fvNV(GLuint index, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttrib1sNV(GLuint index, GLshort x);
extern HIDDEN void __indirect_glVertexAttrib1svNV(GLuint index, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y);
extern HIDDEN void __indirect_glVertexAttrib2dvNV(GLuint index, const GLdouble * v);
extern HIDDEN void __indirect_glVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y);
extern HIDDEN void __indirect_glVertexAttrib2fvNV(GLuint index, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttrib2sNV(GLuint index, GLshort x, GLshort y);
extern HIDDEN void __indirect_glVertexAttrib2svNV(GLuint index, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z);
extern HIDDEN void __indirect_glVertexAttrib3dvNV(GLuint index, const GLdouble * v);
extern HIDDEN void __indirect_glVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z);
extern HIDDEN void __indirect_glVertexAttrib3fvNV(GLuint index, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z);
extern HIDDEN void __indirect_glVertexAttrib3svNV(GLuint index, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
extern HIDDEN void __indirect_glVertexAttrib4dvNV(GLuint index, const GLdouble * v);
extern HIDDEN void __indirect_glVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
extern HIDDEN void __indirect_glVertexAttrib4fvNV(GLuint index, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
extern HIDDEN void __indirect_glVertexAttrib4svNV(GLuint index, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
extern HIDDEN void __indirect_glVertexAttrib4ubvNV(GLuint index, const GLubyte * v);
extern HIDDEN void __indirect_glVertexAttribPointerNV(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
extern HIDDEN void __indirect_glVertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble * v);
extern HIDDEN void __indirect_glVertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttribs1svNV(GLuint index, GLsizei n, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble * v);
extern HIDDEN void __indirect_glVertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttribs2svNV(GLuint index, GLsizei n, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble * v);
extern HIDDEN void __indirect_glVertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttribs3svNV(GLuint index, GLsizei n, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble * v);
extern HIDDEN void __indirect_glVertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat * v);
extern HIDDEN void __indirect_glVertexAttribs4svNV(GLuint index, GLsizei n, const GLshort * v);
extern HIDDEN void __indirect_glVertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte * v);
extern HIDDEN void __indirect_glPointParameteriNV(GLenum pname, GLint param);
extern HIDDEN void __indirect_glPointParameterivNV(GLenum pname, const GLint * params);
extern HIDDEN void __indirect_glActiveStencilFaceEXT(GLenum face);
extern HIDDEN void __indirect_glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params);
extern HIDDEN void __indirect_glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params);
extern HIDDEN void __indirect_glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
extern HIDDEN void __indirect_glProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v);
extern HIDDEN void __indirect_glProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
extern HIDDEN void __indirect_glProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v);
extern HIDDEN void __indirect_glBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeA);
extern HIDDEN void __indirect_glBindFramebufferEXT(GLenum target, GLuint framebuffer);
extern HIDDEN void __indirect_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer);
extern HIDDEN GLenum __indirect_glCheckFramebufferStatusEXT(GLenum target);
extern HIDDEN void __indirect_glDeleteFramebuffersEXT(GLsizei n, const GLuint * framebuffers);
extern HIDDEN void __indirect_glDeleteRenderbuffersEXT(GLsizei n, const GLuint * renderbuffers);
extern HIDDEN void __indirect_glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
extern HIDDEN void __indirect_glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
extern HIDDEN void __indirect_glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
extern HIDDEN void __indirect_glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
extern HIDDEN void __indirect_glGenFramebuffersEXT(GLsizei n, GLuint * framebuffers);
extern HIDDEN void __indirect_glGenRenderbuffersEXT(GLsizei n, GLuint * renderbuffers);
extern HIDDEN void __indirect_glGenerateMipmapEXT(GLenum target);
extern HIDDEN void __indirect_glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint * params);
extern HIDDEN void __indirect_glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint * params);
extern HIDDEN GLboolean __indirect_glIsFramebufferEXT(GLuint framebuffer);
extern HIDDEN GLboolean __indirect_glIsRenderbufferEXT(GLuint renderbuffer);
extern HIDDEN void __indirect_glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
extern HIDDEN void __indirect_glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
extern HIDDEN void __indirect_glFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);

#  undef HIDDEN
#  undef FASTCALL
#  undef NOINLINE

#endif /* !defined( _INDIRECT_H_ ) */
