Path: blob/21.2-virgl/src/gallium/frontends/wgl/gldrv.h
4561 views
/*1* Copyright © Microsoft Corporation2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* the rights to use, copy, modify, merge, publish, distribute, sublicense,7* and/or sell copies of the Software, and to permit persons to whom the8* Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice (including the next11* paragraph) shall be included in all copies or substantial portions of the12* Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL17* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER18* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING19* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS20* IN THE SOFTWARE.21*/2223#ifndef _GLDRV_24#define _GLDRV_2526#include <specstrings.h>2728// Number of entries expected for various versions of OpenGL29#define OPENGL_VERSION_100_ENTRIES 30630#define OPENGL_VERSION_110_ENTRIES 3363132typedef struct _GLDISPATCHTABLE {33void (APIENTRY *glNewList )( GLuint list, GLenum mode );34void (APIENTRY *glEndList )( void );35void (APIENTRY *glCallList )( GLuint list );36void (APIENTRY *glCallLists )( GLsizei n, GLenum type, const GLvoid *lists );37void (APIENTRY *glDeleteLists )( GLuint list, GLsizei range );38GLuint (APIENTRY *glGenLists )( GLsizei range );39void (APIENTRY *glListBase )( GLuint base );40void (APIENTRY *glBegin )( GLenum mode );41void (APIENTRY *glBitmap )( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap );42void (APIENTRY *glColor3b )( GLbyte red, GLbyte green, GLbyte blue );43void (APIENTRY *glColor3bv )( const GLbyte *v );44void (APIENTRY *glColor3d )( GLdouble red, GLdouble green, GLdouble blue );45void (APIENTRY *glColor3dv )( const GLdouble *v );46void (APIENTRY *glColor3f )( GLfloat red, GLfloat green, GLfloat blue );47void (APIENTRY *glColor3fv )( const GLfloat *v );48void (APIENTRY *glColor3i )( GLint red, GLint green, GLint blue );49void (APIENTRY *glColor3iv )( const GLint *v );50void (APIENTRY *glColor3s )( GLshort red, GLshort green, GLshort blue );51void (APIENTRY *glColor3sv )( const GLshort *v );52void (APIENTRY *glColor3ub )( GLubyte red, GLubyte green, GLubyte blue );53void (APIENTRY *glColor3ubv )( const GLubyte *v );54void (APIENTRY *glColor3ui )( GLuint red, GLuint green, GLuint blue );55void (APIENTRY *glColor3uiv )( const GLuint *v );56void (APIENTRY *glColor3us )( GLushort red, GLushort green, GLushort blue );57void (APIENTRY *glColor3usv )( const GLushort *v );58void (APIENTRY *glColor4b )( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha );59void (APIENTRY *glColor4bv )( const GLbyte *v );60void (APIENTRY *glColor4d )( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha );61void (APIENTRY *glColor4dv )( const GLdouble *v );62void (APIENTRY *glColor4f )( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );63void (APIENTRY *glColor4fv )( const GLfloat *v );64void (APIENTRY *glColor4i )( GLint red, GLint green, GLint blue, GLint alpha );65void (APIENTRY *glColor4iv )( const GLint *v );66void (APIENTRY *glColor4s )( GLshort red, GLshort green, GLshort blue, GLshort alpha );67void (APIENTRY *glColor4sv )( const GLshort *v );68void (APIENTRY *glColor4ub )( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );69void (APIENTRY *glColor4ubv )( const GLubyte *v );70void (APIENTRY *glColor4ui )( GLuint red, GLuint green, GLuint blue, GLuint alpha );71void (APIENTRY *glColor4uiv )( const GLuint *v );72void (APIENTRY *glColor4us )( GLushort red, GLushort green, GLushort blue, GLushort alpha );73void (APIENTRY *glColor4usv )( const GLushort *v );74void (APIENTRY *glEdgeFlag )( GLboolean flag );75void (APIENTRY *glEdgeFlagv )( const GLboolean *flag );76void (APIENTRY *glEnd )( void );77void (APIENTRY *glIndexd )( GLdouble c );78void (APIENTRY *glIndexdv )( const GLdouble *c );79void (APIENTRY *glIndexf )( GLfloat c );80void (APIENTRY *glIndexfv )( const GLfloat *c );81void (APIENTRY *glIndexi )( GLint c );82void (APIENTRY *glIndexiv )( const GLint *c );83void (APIENTRY *glIndexs )( GLshort c );84void (APIENTRY *glIndexsv )( const GLshort *c );85void (APIENTRY *glNormal3b )( GLbyte nx, GLbyte ny, GLbyte nz );86void (APIENTRY *glNormal3bv )( const GLbyte *v );87void (APIENTRY *glNormal3d )( GLdouble nx, GLdouble ny, GLdouble nz );88void (APIENTRY *glNormal3dv )( const GLdouble *v );89void (APIENTRY *glNormal3f )( GLfloat nx, GLfloat ny, GLfloat nz );90void (APIENTRY *glNormal3fv )( const GLfloat *v );91void (APIENTRY *glNormal3i )( GLint nx, GLint ny, GLint nz );92void (APIENTRY *glNormal3iv )( const GLint *v );93void (APIENTRY *glNormal3s )( GLshort nx, GLshort ny, GLshort nz );94void (APIENTRY *glNormal3sv )( const GLshort *v );95void (APIENTRY *glRasterPos2d )( GLdouble x, GLdouble y );96void (APIENTRY *glRasterPos2dv )( const GLdouble *v );97void (APIENTRY *glRasterPos2f )( GLfloat x, GLfloat y );98void (APIENTRY *glRasterPos2fv )( const GLfloat *v );99void (APIENTRY *glRasterPos2i )( GLint x, GLint y );100void (APIENTRY *glRasterPos2iv )( const GLint *v );101void (APIENTRY *glRasterPos2s )( GLshort x, GLshort y );102void (APIENTRY *glRasterPos2sv )( const GLshort *v );103void (APIENTRY *glRasterPos3d )( GLdouble x, GLdouble y, GLdouble z );104void (APIENTRY *glRasterPos3dv )( const GLdouble *v );105void (APIENTRY *glRasterPos3f )( GLfloat x, GLfloat y, GLfloat z );106void (APIENTRY *glRasterPos3fv )( const GLfloat *v );107void (APIENTRY *glRasterPos3i )( GLint x, GLint y, GLint z );108void (APIENTRY *glRasterPos3iv )( const GLint *v );109void (APIENTRY *glRasterPos3s )( GLshort x, GLshort y, GLshort z );110void (APIENTRY *glRasterPos3sv )( const GLshort *v );111void (APIENTRY *glRasterPos4d )( GLdouble x, GLdouble y, GLdouble z, GLdouble w );112void (APIENTRY *glRasterPos4dv )( const GLdouble *v );113void (APIENTRY *glRasterPos4f )( GLfloat x, GLfloat y, GLfloat z, GLfloat w );114void (APIENTRY *glRasterPos4fv )( const GLfloat *v );115void (APIENTRY *glRasterPos4i )( GLint x, GLint y, GLint z, GLint w );116void (APIENTRY *glRasterPos4iv )( const GLint *v );117void (APIENTRY *glRasterPos4s )( GLshort x, GLshort y, GLshort z, GLshort w );118void (APIENTRY *glRasterPos4sv )( const GLshort *v );119void (APIENTRY *glRectd )( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );120void (APIENTRY *glRectdv )( const GLdouble *v1, const GLdouble *v2 );121void (APIENTRY *glRectf )( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );122void (APIENTRY *glRectfv )( const GLfloat *v1, const GLfloat *v2 );123void (APIENTRY *glRecti )( GLint x1, GLint y1, GLint x2, GLint y2 );124void (APIENTRY *glRectiv )( const GLint *v1, const GLint *v2 );125void (APIENTRY *glRects )( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );126void (APIENTRY *glRectsv )( const GLshort *v1, const GLshort *v2 );127void (APIENTRY *glTexCoord1d )( GLdouble s );128void (APIENTRY *glTexCoord1dv )( const GLdouble *v );129void (APIENTRY *glTexCoord1f )( GLfloat s );130void (APIENTRY *glTexCoord1fv )( const GLfloat *v );131void (APIENTRY *glTexCoord1i )( GLint s );132void (APIENTRY *glTexCoord1iv )( const GLint *v );133void (APIENTRY *glTexCoord1s )( GLshort s );134void (APIENTRY *glTexCoord1sv )( const GLshort *v );135void (APIENTRY *glTexCoord2d )( GLdouble s, GLdouble t );136void (APIENTRY *glTexCoord2dv )( const GLdouble *v );137void (APIENTRY *glTexCoord2f )( GLfloat s, GLfloat t );138void (APIENTRY *glTexCoord2fv )( const GLfloat *v );139void (APIENTRY *glTexCoord2i )( GLint s, GLint t );140void (APIENTRY *glTexCoord2iv )( const GLint *v );141void (APIENTRY *glTexCoord2s )( GLshort s, GLshort t );142void (APIENTRY *glTexCoord2sv )( const GLshort *v );143void (APIENTRY *glTexCoord3d )( GLdouble s, GLdouble t, GLdouble r );144void (APIENTRY *glTexCoord3dv )( const GLdouble *v );145void (APIENTRY *glTexCoord3f )( GLfloat s, GLfloat t, GLfloat r );146void (APIENTRY *glTexCoord3fv )( const GLfloat *v );147void (APIENTRY *glTexCoord3i )( GLint s, GLint t, GLint r );148void (APIENTRY *glTexCoord3iv )( const GLint *v );149void (APIENTRY *glTexCoord3s )( GLshort s, GLshort t, GLshort r );150void (APIENTRY *glTexCoord3sv )( const GLshort *v );151void (APIENTRY *glTexCoord4d )( GLdouble s, GLdouble t, GLdouble r, GLdouble q );152void (APIENTRY *glTexCoord4dv )( const GLdouble *v );153void (APIENTRY *glTexCoord4f )( GLfloat s, GLfloat t, GLfloat r, GLfloat q );154void (APIENTRY *glTexCoord4fv )( const GLfloat *v );155void (APIENTRY *glTexCoord4i )( GLint s, GLint t, GLint r, GLint q );156void (APIENTRY *glTexCoord4iv )( const GLint *v );157void (APIENTRY *glTexCoord4s )( GLshort s, GLshort t, GLshort r, GLshort q );158void (APIENTRY *glTexCoord4sv )( const GLshort *v );159void (APIENTRY *glVertex2d )( GLdouble x, GLdouble y );160void (APIENTRY *glVertex2dv )( const GLdouble *v );161void (APIENTRY *glVertex2f )( GLfloat x, GLfloat y );162void (APIENTRY *glVertex2fv )( const GLfloat *v );163void (APIENTRY *glVertex2i )( GLint x, GLint y );164void (APIENTRY *glVertex2iv )( const GLint *v );165void (APIENTRY *glVertex2s )( GLshort x, GLshort y );166void (APIENTRY *glVertex2sv )( const GLshort *v );167void (APIENTRY *glVertex3d )( GLdouble x, GLdouble y, GLdouble z );168void (APIENTRY *glVertex3dv )( const GLdouble *v );169void (APIENTRY *glVertex3f )( GLfloat x, GLfloat y, GLfloat z );170void (APIENTRY *glVertex3fv )( const GLfloat *v );171void (APIENTRY *glVertex3i )( GLint x, GLint y, GLint z );172void (APIENTRY *glVertex3iv )( const GLint *v );173void (APIENTRY *glVertex3s )( GLshort x, GLshort y, GLshort z );174void (APIENTRY *glVertex3sv )( const GLshort *v );175void (APIENTRY *glVertex4d )( GLdouble x, GLdouble y, GLdouble z, GLdouble w );176void (APIENTRY *glVertex4dv )( const GLdouble *v );177void (APIENTRY *glVertex4f )( GLfloat x, GLfloat y, GLfloat z, GLfloat w );178void (APIENTRY *glVertex4fv )( const GLfloat *v );179void (APIENTRY *glVertex4i )( GLint x, GLint y, GLint z, GLint w );180void (APIENTRY *glVertex4iv )( const GLint *v );181void (APIENTRY *glVertex4s )( GLshort x, GLshort y, GLshort z, GLshort w );182void (APIENTRY *glVertex4sv )( const GLshort *v );183void (APIENTRY *glClipPlane )( GLenum plane, const GLdouble *equation );184void (APIENTRY *glColorMaterial )( GLenum face, GLenum mode );185void (APIENTRY *glCullFace )( GLenum mode );186void (APIENTRY *glFogf )( GLenum pname, GLfloat param );187void (APIENTRY *glFogfv )( GLenum pname, const GLfloat *params );188void (APIENTRY *glFogi )( GLenum pname, GLint param );189void (APIENTRY *glFogiv )( GLenum pname, const GLint *params );190void (APIENTRY *glFrontFace )( GLenum mode );191void (APIENTRY *glHint )( GLenum target, GLenum mode );192void (APIENTRY *glLightf )( GLenum light, GLenum pname, GLfloat param );193void (APIENTRY *glLightfv )( GLenum light, GLenum pname, const GLfloat *params );194void (APIENTRY *glLighti )( GLenum light, GLenum pname, GLint param );195void (APIENTRY *glLightiv )( GLenum light, GLenum pname, const GLint *params );196void (APIENTRY *glLightModelf )( GLenum pname, GLfloat param );197void (APIENTRY *glLightModelfv )( GLenum pname, const GLfloat *params );198void (APIENTRY *glLightModeli )( GLenum pname, GLint param );199void (APIENTRY *glLightModeliv )( GLenum pname, const GLint *params );200void (APIENTRY *glLineStipple )( GLint factor, GLushort pattern );201void (APIENTRY *glLineWidth )( GLfloat width );202void (APIENTRY *glMaterialf )( GLenum face, GLenum pname, GLfloat param );203void (APIENTRY *glMaterialfv )( GLenum face, GLenum pname, const GLfloat *params );204void (APIENTRY *glMateriali )( GLenum face, GLenum pname, GLint param );205void (APIENTRY *glMaterialiv )( GLenum face, GLenum pname, const GLint *params );206void (APIENTRY *glPointSize )( GLfloat size );207void (APIENTRY *glPolygonMode )( GLenum face, GLenum mode );208void (APIENTRY *glPolygonStipple )( const GLubyte *mask );209void (APIENTRY *glScissor )( GLint x, GLint y, GLsizei width, GLsizei height );210void (APIENTRY *glShadeModel )( GLenum mode );211void (APIENTRY *glTexParameterf )( GLenum target, GLenum pname, GLfloat param );212void (APIENTRY *glTexParameterfv )( GLenum target, GLenum pname, const GLfloat *params );213void (APIENTRY *glTexParameteri )( GLenum target, GLenum pname, GLint param );214void (APIENTRY *glTexParameteriv )( GLenum target, GLenum pname, const GLint *params );215void (APIENTRY *glTexImage1D )( GLenum target, GLint level, GLint components, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels );216void (APIENTRY *glTexImage2D )( GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels );217void (APIENTRY *glTexEnvf )( GLenum target, GLenum pname, GLfloat param );218void (APIENTRY *glTexEnvfv )( GLenum target, GLenum pname, const GLfloat *params );219void (APIENTRY *glTexEnvi )( GLenum target, GLenum pname, GLint param );220void (APIENTRY *glTexEnviv )( GLenum target, GLenum pname, const GLint *params );221void (APIENTRY *glTexGend )( GLenum coord, GLenum pname, GLdouble param );222void (APIENTRY *glTexGendv )( GLenum coord, GLenum pname, const GLdouble *params );223void (APIENTRY *glTexGenf )( GLenum coord, GLenum pname, GLfloat param );224void (APIENTRY *glTexGenfv )( GLenum coord, GLenum pname, const GLfloat *params );225void (APIENTRY *glTexGeni )( GLenum coord, GLenum pname, GLint param );226void (APIENTRY *glTexGeniv )( GLenum coord, GLenum pname, const GLint *params );227void (APIENTRY *glFeedbackBuffer )( GLsizei size, GLenum type, GLfloat *buffer );228void (APIENTRY *glSelectBuffer )( GLsizei size, GLuint *buffer );229GLint (APIENTRY *glRenderMode )( GLenum mode );230void (APIENTRY *glInitNames )( void );231void (APIENTRY *glLoadName )( GLuint name );232void (APIENTRY *glPassThrough )( GLfloat token );233void (APIENTRY *glPopName )( void );234void (APIENTRY *glPushName )( GLuint name );235void (APIENTRY *glDrawBuffer )( GLenum mode );236void (APIENTRY *glClear )( GLbitfield mask );237void (APIENTRY *glClearAccum )( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );238void (APIENTRY *glClearIndex )( GLfloat c );239void (APIENTRY *glClearColor )( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );240void (APIENTRY *glClearStencil )( GLint s );241void (APIENTRY *glClearDepth )( GLclampd depth );242void (APIENTRY *glStencilMask )( GLuint mask );243void (APIENTRY *glColorMask )( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );244void (APIENTRY *glDepthMask )( GLboolean flag );245void (APIENTRY *glIndexMask )( GLuint mask );246void (APIENTRY *glAccum )( GLenum op, GLfloat value );247void (APIENTRY *glDisable )( GLenum cap );248void (APIENTRY *glEnable )( GLenum cap );249void (APIENTRY *glFinish )( void );250void (APIENTRY *glFlush )( void );251void (APIENTRY *glPopAttrib )( void );252void (APIENTRY *glPushAttrib )( GLbitfield mask );253void (APIENTRY *glMap1d )( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points );254void (APIENTRY *glMap1f )( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points );255void (APIENTRY *glMap2d )( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points );256void (APIENTRY *glMap2f )( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points );257void (APIENTRY *glMapGrid1d )( GLint un, GLdouble u1, GLdouble u2 );258void (APIENTRY *glMapGrid1f )( GLint un, GLfloat u1, GLfloat u2 );259void (APIENTRY *glMapGrid2d )( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 );260void (APIENTRY *glMapGrid2f )( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 );261void (APIENTRY *glEvalCoord1d )( GLdouble u );262void (APIENTRY *glEvalCoord1dv )( const GLdouble *u );263void (APIENTRY *glEvalCoord1f )( GLfloat u );264void (APIENTRY *glEvalCoord1fv )( const GLfloat *u );265void (APIENTRY *glEvalCoord2d )( GLdouble u, GLdouble v );266void (APIENTRY *glEvalCoord2dv )( const GLdouble *u );267void (APIENTRY *glEvalCoord2f )( GLfloat u, GLfloat v );268void (APIENTRY *glEvalCoord2fv )( const GLfloat *u );269void (APIENTRY *glEvalMesh1 )( GLenum mode, GLint i1, GLint i2 );270void (APIENTRY *glEvalPoint1 )( GLint i );271void (APIENTRY *glEvalMesh2 )( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );272void (APIENTRY *glEvalPoint2 )( GLint i, GLint j );273void (APIENTRY *glAlphaFunc )( GLenum func, GLclampf ref );274void (APIENTRY *glBlendFunc )( GLenum sfactor, GLenum dfactor );275void (APIENTRY *glLogicOp )( GLenum opcode );276void (APIENTRY *glStencilFunc )( GLenum func, GLint ref, GLuint mask );277void (APIENTRY *glStencilOp )( GLenum fail, GLenum zfail, GLenum zpass );278void (APIENTRY *glDepthFunc )( GLenum func );279void (APIENTRY *glPixelZoom )( GLfloat xfactor, GLfloat yfactor );280void (APIENTRY *glPixelTransferf )( GLenum pname, GLfloat param );281void (APIENTRY *glPixelTransferi )( GLenum pname, GLint param );282void (APIENTRY *glPixelStoref )( GLenum pname, GLfloat param );283void (APIENTRY *glPixelStorei )( GLenum pname, GLint param );284void (APIENTRY *glPixelMapfv )( GLenum map, GLint mapsize, const GLfloat *values );285void (APIENTRY *glPixelMapuiv )( GLenum map, GLint mapsize, const GLuint *values );286void (APIENTRY *glPixelMapusv )( GLenum map, GLint mapsize, const GLushort *values );287void (APIENTRY *glReadBuffer )( GLenum mode );288void (APIENTRY *glCopyPixels )( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type );289void (APIENTRY *glReadPixels )( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels );290void (APIENTRY *glDrawPixels )( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels );291void (APIENTRY *glGetBooleanv )( GLenum pname, GLboolean *params );292void (APIENTRY *glGetClipPlane )( GLenum plane, GLdouble *equation );293void (APIENTRY *glGetDoublev )( GLenum pname, GLdouble *params );294GLenum (APIENTRY *glGetError )( void );295void (APIENTRY *glGetFloatv )( GLenum pname, GLfloat *params );296void (APIENTRY *glGetIntegerv )( GLenum pname, GLint *params );297void (APIENTRY *glGetLightfv )( GLenum light, GLenum pname, GLfloat *params );298void (APIENTRY *glGetLightiv )( GLenum light, GLenum pname, GLint *params );299void (APIENTRY *glGetMapdv )( GLenum target, GLenum query, GLdouble *v );300void (APIENTRY *glGetMapfv )( GLenum target, GLenum query, GLfloat *v );301void (APIENTRY *glGetMapiv )( GLenum target, GLenum query, GLint *v );302void (APIENTRY *glGetMaterialfv )( GLenum face, GLenum pname, GLfloat *params );303void (APIENTRY *glGetMaterialiv )( GLenum face, GLenum pname, GLint *params );304void (APIENTRY *glGetPixelMapfv )( GLenum map, GLfloat *values );305void (APIENTRY *glGetPixelMapuiv )( GLenum map, GLuint *values );306void (APIENTRY *glGetPixelMapusv )( GLenum map, GLushort *values );307void (APIENTRY *glGetPolygonStipple )( GLubyte *mask );308const GLubyte * (APIENTRY *glGetString )( GLenum name );309void (APIENTRY *glGetTexEnvfv )( GLenum target, GLenum pname, GLfloat *params );310void (APIENTRY *glGetTexEnviv )( GLenum target, GLenum pname, GLint *params );311void (APIENTRY *glGetTexGendv )( GLenum coord, GLenum pname, GLdouble *params );312void (APIENTRY *glGetTexGenfv )( GLenum coord, GLenum pname, GLfloat *params );313void (APIENTRY *glGetTexGeniv )( GLenum coord, GLenum pname, GLint *params );314void (APIENTRY *glGetTexImage )( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels );315void (APIENTRY *glGetTexParameterfv )( GLenum target, GLenum pname, GLfloat *params );316void (APIENTRY *glGetTexParameteriv )( GLenum target, GLenum pname, GLint *params );317void (APIENTRY *glGetTexLevelParameterfv )( GLenum target, GLint level, GLenum pname, GLfloat *params );318void (APIENTRY *glGetTexLevelParameteriv )( GLenum target, GLint level, GLenum pname, GLint *params );319GLboolean (APIENTRY *glIsEnabled )( GLenum cap );320GLboolean (APIENTRY *glIsList )( GLuint list );321void (APIENTRY *glDepthRange )( GLclampd zNear, GLclampd zFar );322void (APIENTRY *glFrustum )( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar );323void (APIENTRY *glLoadIdentity )( void );324void (APIENTRY *glLoadMatrixf )( const GLfloat *m );325void (APIENTRY *glLoadMatrixd )( const GLdouble *m );326void (APIENTRY *glMatrixMode )( GLenum mode );327void (APIENTRY *glMultMatrixf )( const GLfloat *m );328void (APIENTRY *glMultMatrixd )( const GLdouble *m );329void (APIENTRY *glOrtho )( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar );330void (APIENTRY *glPopMatrix )( void );331void (APIENTRY *glPushMatrix )( void );332void (APIENTRY *glRotated )( GLdouble angle, GLdouble x, GLdouble y, GLdouble z );333void (APIENTRY *glRotatef )( GLfloat angle, GLfloat x, GLfloat y, GLfloat z );334void (APIENTRY *glScaled )( GLdouble x, GLdouble y, GLdouble z );335void (APIENTRY *glScalef )( GLfloat x, GLfloat y, GLfloat z );336void (APIENTRY *glTranslated )( GLdouble x, GLdouble y, GLdouble z );337void (APIENTRY *glTranslatef )( GLfloat x, GLfloat y, GLfloat z );338void (APIENTRY *glViewport )( GLint x, GLint y, GLsizei width, GLsizei height );339// OpenGL version 1.0 entries end here340341// OpenGL version 1.1 entries begin here342void (APIENTRY *glArrayElement )(GLint i);343void (APIENTRY *glBindTexture )(GLenum target, GLuint texture);344void (APIENTRY *glColorPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);345void (APIENTRY *glDisableClientState )(GLenum array);346void (APIENTRY *glDrawArrays )(GLenum mode, GLint first, GLsizei count);347void (APIENTRY *glDrawElements )(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);348void (APIENTRY *glEdgeFlagPointer )(GLsizei stride, const GLvoid *pointer);349void (APIENTRY *glEnableClientState )(GLenum array);350void (APIENTRY *glIndexPointer )(GLenum type, GLsizei stride, const GLvoid *pointer);351void (APIENTRY *glIndexub )(GLubyte c);352void (APIENTRY *glIndexubv )(const GLubyte *c);353void (APIENTRY *glInterleavedArrays )(GLenum format, GLsizei stride, const GLvoid *pointer);354void (APIENTRY *glNormalPointer )(GLenum type, GLsizei stride, const GLvoid *pointer);355void (APIENTRY *glPolygonOffset )(GLfloat factor, GLfloat units);356void (APIENTRY *glTexCoordPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);357void (APIENTRY *glVertexPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);358GLboolean (APIENTRY *glAreTexturesResident )(GLsizei n, const GLuint *textures, GLboolean *residences);359void (APIENTRY *glCopyTexImage1D )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);360void (APIENTRY *glCopyTexImage2D )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);361void (APIENTRY *glCopyTexSubImage1D )(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);362void (APIENTRY *glCopyTexSubImage2D )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);363void (APIENTRY *glDeleteTextures )(GLsizei n, const GLuint *textures);364void (APIENTRY *glGenTextures )(GLsizei n, GLuint *textures);365void (APIENTRY *glGetPointerv )(GLenum pname, GLvoid* *params);366GLboolean (APIENTRY *glIsTexture )(GLuint texture);367void (APIENTRY *glPrioritizeTextures )(GLsizei n, const GLuint *textures, const GLclampf *priorities);368void (APIENTRY *glTexSubImage1D )(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);369void (APIENTRY *glTexSubImage2D )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);370void (APIENTRY *glPopClientAttrib )(void);371void (APIENTRY *glPushClientAttrib )(GLbitfield mask);372} GLDISPATCHTABLE, *PGLDISPATCHTABLE;373374// OpenGL Client/Driver Procedure Table.375376typedef struct _GLCLTPROCTABLE {377_In_range_(0,OPENGL_VERSION_110_ENTRIES) int cEntries; // Number of function entries in table378GLDISPATCHTABLE glDispatchTable; // OpenGL function dispatch table379} GLCLTPROCTABLE, *PGLCLTPROCTABLE;380381// Driver GLRC handle.382383typedef ULONG DHGLRC;384385// SetProcTable function prototype for DrvSetContext.386387typedef VOID (APIENTRY *PFN_SETPROCTABLE)(PGLCLTPROCTABLE);388389// DrvSetCallbackProcs prototypes390typedef VOID (APIENTRY *PFN_SETCURRENTVALUE)(VOID *pv);391typedef VOID *(APIENTRY *PFN_GETCURRENTVALUE)(VOID);392typedef DHGLRC (APIENTRY *PFN_GETDHGLRC)(HGLRC hrc);393#if WINVER >= 0x600394typedef struct _PRESENTBUFFERSCB {395IN UINT nVersion;396IN UINT syncType; // See PRESCB_SYNCTYPE_NONE and PRESCB_SYNCTYPE_VSYNC397IN LUID luidAdapter;398IN LPVOID pPrivData;399IN RECT updateRect; // Update rectangle in the coordinate system of the window, whose HDC is passed to PFN_PRESENTBUFFERS400} PRESENTBUFFERSCB, *LPPRESENTBUFFERSCB;401typedef BOOL (APIENTRY *PFN_PRESENTBUFFERS)(HDC hdc, LPPRESENTBUFFERSCB pprsbcbData);402#endif403#if WINVER >= 0xA00404typedef VOID (APIENTRY *PFN_GETADAPTERLUID)(HDC hdc, OUT LUID* pLuid);405typedef struct _CHECKFULLSCREENSUPPORTCB {406IN UINT nVersion;407IN LUID luidAdapter;408IN UINT hDevice;409IN HMONITOR hMonitor;410OUT UINT VidPnSourceId;411} CHECKFULLSCREENSUPPORTCB, *LPCHECKFULLSCREENSUPPORTCB;412typedef BOOL (APIENTRY *PFN_CHECKFULLSCREENSUPPORT)(HDC hdc, LPCHECKFULLSCREENSUPPORTCB pArgs);413typedef struct _PRESENTTOREDIRECTIONSURFACECB {414IN UINT nVersion;415IN UINT hContext;416IN UINT hSource;417IN UINT hDestination;418IN HANDLE hSharedHandle;419IN UINT64 updateId;420IN RECT updateRect;421IN UINT broadcastContextCount;422IN UINT broadcastContext[64];423IN UINT broadcastSrcAllocation[64];424IN UINT broadcastDstAllocation[64];425IN UINT cbPrivateDriverDataSize;426IN VOID *pPrivateDriverData;427} PRESENTTOREDIRECTIONSURFACECB, *LPPRESENTTOREDIRECTIONSURFACECB;428typedef BOOL (APIENTRY *PFN_PRESENTTOREDIRECTIONSURFACE)(HDC hdc, LPPRESENTTOREDIRECTIONSURFACECB pArgs);429typedef struct _SUBMITPRESENTTOREDIRECTIONSURFACECB {430IN UINT nVersion;431IN HANDLE hSharedHandle;432IN UINT64 updateId;433IN RECT updateRect;434IN UINT broadcastHwQueueCount;435436_Field_size_(broadcastHwQueueCount)437IN UINT *broadcastHwQueue;438439_Field_size_(broadcastHwQueueCount)440IN UINT *broadcastSrcAllocation;441442_Field_size_opt_(broadcastHwQueueCount)443IN UINT *broadcastDstAllocation;444445IN UINT cbPrivateDriverDataSize;446IN VOID *pPrivateDriverData;447} SUBMITPRESENTTOREDIRECTIONSURFACECB, *LPSUBMITPRESENTTOREDIRECTIONSURFACECB;448typedef BOOL (APIENTRY *PFN_SUBMITPRESENTTOREDIRECTIONSURFACE)(HDC hdc, LPSUBMITPRESENTTOREDIRECTIONSURFACECB pArgs);449#endif450451// Note: Structure not referenced directly, simply present to document the expected order/count of452// callbacks received through DrvSetCallbackProcs.453struct WGLCALLBACKS454{455PFN_SETCURRENTVALUE pfnSetCurrentValue;456PFN_GETCURRENTVALUE pfnGetCurrentValue;457PFN_GETDHGLRC pfnGetDhglrc;458PROC pfnUnused;459#if WINVER >= 0x600460PFN_PRESENTBUFFERS pfnPresentBuffers;461#endif462#if WINVER >= 0xA00463PFN_GETADAPTERLUID pfnGetAdapterLuid;464PFN_CHECKFULLSCREENSUPPORT pfnCheckFullscreenSupport;465PFN_PRESENTTOREDIRECTIONSURFACE pfnPresentToRedirectionSurface;466PFN_SUBMITPRESENTTOREDIRECTIONSURFACE pfnSubmitPresentToRedirectionSurface;467#endif468};469470// Driver context function prototypes.471472BOOL APIENTRY DrvCopyContext(DHGLRC, DHGLRC, UINT);473DHGLRC APIENTRY DrvCreateContext(HDC);474DHGLRC APIENTRY DrvCreateLayerContext(HDC, int);475BOOL APIENTRY DrvDeleteContext(DHGLRC);476PGLCLTPROCTABLE APIENTRY DrvSetContext(HDC,DHGLRC,PFN_SETPROCTABLE);477BOOL APIENTRY DrvReleaseContext(DHGLRC);478BOOL APIENTRY DrvValidateVersion(ULONG);479BOOL APIENTRY DrvShareLists(DHGLRC, DHGLRC);480PROC APIENTRY DrvGetProcAddress(LPCSTR);481VOID APIENTRY DrvSetCallbackProcs(INT, PROC *); // See WGLCALLBACKS for expected order/count per OS.482BOOL APIENTRY DrvDescribeLayerPlane(HDC, INT, INT, UINT,483LPLAYERPLANEDESCRIPTOR);484INT APIENTRY DrvSetLayerPaletteEntries(HDC, INT, INT, INT,485CONST COLORREF *);486INT APIENTRY DrvGetLayerPaletteEntries(HDC, INT, INT, INT,487COLORREF *);488BOOL APIENTRY DrvRealizeLayerPalette(HDC, INT, BOOL);489BOOL APIENTRY DrvSwapLayerBuffers(HDC, UINT);490491#if WINVER >= 0x500492493typedef struct IDirectDrawSurface *LPDIRECTDRAWSURFACE;494typedef struct _DDSURFACEDESC *LPDDSURFACEDESC;495496DHGLRC APIENTRY DrvCreateDirectDrawContext(HDC, LPDIRECTDRAWSURFACE,497int);498int APIENTRY DrvEnumTextureFormats(int, LPDDSURFACEDESC);499BOOL APIENTRY DrvBindDirectDrawTexture(LPDIRECTDRAWSURFACE);500DWORD APIENTRY DrvSwapMultipleBuffers(UINT cBuffers,501CONST WGLSWAP *pgswap);502503LONG APIENTRY DrvDescribePixelFormat(HDC, INT, ULONG, PIXELFORMATDESCRIPTOR*);504BOOL APIENTRY DrvSetPixelFormat(HDC, LONG);505BOOL APIENTRY DrvSwapBuffers(HDC);506507#endif // WINVER >= 0x500508509#if WINVER >= 0x600510typedef struct _PRESENTBUFFERS {511IN HANDLE hSurface;512IN LUID luidAdapter;513IN ULONGLONG ullPresentToken;514IN LPVOID pPrivData;515} PRESENTBUFFERS, *LPPRESENTBUFFERS;516typedef BOOL (APIENTRY *PFN_PRESENTBUFFERS)(HDC hdc, LPPRESENTBUFFERSCB pprsbcbData);517518#define PRESCB_SYNCTYPE_NONE 0519#define PRESCB_SYNCTYPE_VSYNC 1520521BOOL APIENTRY DrvPresentBuffers(HDC hdc, LPPRESENTBUFFERS pprsbData);522523#endif524525// Input structure for OPENGL_CMD ExtEscape.526527typedef struct _WNDOBJ WNDOBJ;528typedef struct _XLATEOBJ XLATEOBJ;529530typedef struct _OPENGLCMD531{532ULONG ulSubEsc;533FLONG fl;534WNDOBJ *pwo;535XLATEOBJ *pxo;536} OPENGLCMD, *POPENGLCMD;537538#if WINVER >= 0x500539540#define OPENGLCMD_MAXMULTI WGL_SWAPMULTIPLE_MAX541542typedef struct _OPENGLCMDMULTI543{544ULONG ulSubEsc;545FLONG fl;546ULONG cMulti;547XLATEOBJ *pxo;548} OPENGLCMDMULTI, *POPENGLCMDMULTI;549550#endif // WINVER >= 0x500551552// Flags for OPENGL_CMD ExtEscape.553554#define OGLCMD_NEEDWNDOBJ 0x01555#define OGLCMD_NEEDXLATEOBJ 0x02556557#if WINVER >= 0x500558#define OGLCMD_MULTIWNDOBJ 0x04559#endif // WINVER >= 0x500560561// OPENGL_GETINFO ExtEscape sub-escape numbers. They are defined by Microsoft.562563#define OPENGL_GETINFO_DRVNAME 0564565// Input structure for OPENGL_GETINFO ExtEscape.566567typedef struct _OPENGLGETINFO568{569ULONG ulSubEsc;570} OPENGLGETINFO, *POPENGLGETINFO;571572// Input structure for OPENGL_GETINFO_DRVNAME ExtEscape.573574typedef struct _GLDRVNAME575{576OPENGLGETINFO oglget;577} GLDRVNAME, *PGLDRVNAME;578579// Output structure for OPENGL_GETINFO_DRVNAME ExtEscape.580581typedef struct _GLDRVNAMERET582{583ULONG ulVersion; // must be 1 for this version584ULONG ulDriverVersion; // driver specific version number585WCHAR awch[MAX_PATH+1];586} GLDRVNAMERET, *PGLDRVNAMERET;587588#endif /* _GLDRV_ */589590591