Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /**************************************************************************
  2.  *
  3.  * Copyright 2008-2009 Vmware, Inc.
  4.  * All Rights Reserved.
  5.  *
  6.  * Permission is hereby granted, free of charge, to any person obtaining a
  7.  * copy of this software and associated documentation files (the
  8.  * "Software"), to deal in the Software without restriction, including
  9.  * without limitation the rights to use, copy, modify, merge, publish,
  10.  * distribute, sub license, and/or sell copies of the Software, and to
  11.  * permit persons to whom the Software is furnished to do so, subject to
  12.  * the following conditions:
  13.  *
  14.  * The above copyright notice and this permission notice (including the
  15.  * next paragraph) shall be included in all copies or substantial portions
  16.  * of the Software.
  17.  *
  18.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  19.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  20.  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
  21.  * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
  22.  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  23.  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  24.  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  25.  *
  26.  **************************************************************************/
  27.  
  28. /**
  29.  * @file
  30.  *
  31.  * This header defines the interface used by the system's opengl32.dll and the
  32.  * Installable Client Driver (ICD).
  33.  */
  34.  
  35. #ifndef STW_ICD_H
  36. #define STW_ICD_H
  37.  
  38.  
  39. #include <windows.h>
  40.  
  41. #include "GL/gl.h"
  42.  
  43.  
  44. typedef ULONG DHGLRC;
  45.  
  46. #define OPENGL_VERSION_110_ENTRIES  336
  47.  
  48. struct __GLdispatchTableRec
  49. {
  50.    void (GLAPIENTRY * NewList)(GLuint, GLenum);
  51.    void (GLAPIENTRY * EndList)(void);
  52.    void (GLAPIENTRY * CallList)(GLuint);
  53.    void (GLAPIENTRY * CallLists)(GLsizei, GLenum, const GLvoid *);
  54.    void (GLAPIENTRY * DeleteLists)(GLuint, GLsizei);
  55.    GLuint (GLAPIENTRY * GenLists)(GLsizei);
  56.    void (GLAPIENTRY * ListBase)(GLuint);
  57.    void (GLAPIENTRY * Begin)(GLenum);
  58.    void (GLAPIENTRY * Bitmap)(GLsizei, GLsizei, GLfloat, GLfloat, GLfloat, GLfloat, const GLubyte *);
  59.    void (GLAPIENTRY * Color3b)(GLbyte, GLbyte, GLbyte);
  60.    void (GLAPIENTRY * Color3bv)(const GLbyte *);
  61.    void (GLAPIENTRY * Color3d)(GLdouble, GLdouble, GLdouble);
  62.    void (GLAPIENTRY * Color3dv)(const GLdouble *);
  63.    void (GLAPIENTRY * Color3f)(GLfloat, GLfloat, GLfloat);
  64.    void (GLAPIENTRY * Color3fv)(const GLfloat *);
  65.    void (GLAPIENTRY * Color3i)(GLint, GLint, GLint);
  66.    void (GLAPIENTRY * Color3iv)(const GLint *);
  67.    void (GLAPIENTRY * Color3s)(GLshort, GLshort, GLshort);
  68.    void (GLAPIENTRY * Color3sv)(const GLshort *);
  69.    void (GLAPIENTRY * Color3ub)(GLubyte, GLubyte, GLubyte);
  70.    void (GLAPIENTRY * Color3ubv)(const GLubyte *);
  71.    void (GLAPIENTRY * Color3ui)(GLuint, GLuint, GLuint);
  72.    void (GLAPIENTRY * Color3uiv)(const GLuint *);
  73.    void (GLAPIENTRY * Color3us)(GLushort, GLushort, GLushort);
  74.    void (GLAPIENTRY * Color3usv)(const GLushort *);
  75.    void (GLAPIENTRY * Color4b)(GLbyte, GLbyte, GLbyte, GLbyte);
  76.    void (GLAPIENTRY * Color4bv)(const GLbyte *);
  77.    void (GLAPIENTRY * Color4d)(GLdouble, GLdouble, GLdouble, GLdouble);
  78.    void (GLAPIENTRY * Color4dv)(const GLdouble *);
  79.    void (GLAPIENTRY * Color4f)(GLfloat, GLfloat, GLfloat, GLfloat);
  80.    void (GLAPIENTRY * Color4fv)(const GLfloat *);
  81.    void (GLAPIENTRY * Color4i)(GLint, GLint, GLint, GLint);
  82.    void (GLAPIENTRY * Color4iv)(const GLint *);
  83.    void (GLAPIENTRY * Color4s)(GLshort, GLshort, GLshort, GLshort);
  84.    void (GLAPIENTRY * Color4sv)(const GLshort *);
  85.    void (GLAPIENTRY * Color4ub)(GLubyte, GLubyte, GLubyte, GLubyte);
  86.    void (GLAPIENTRY * Color4ubv)(const GLubyte *);
  87.    void (GLAPIENTRY * Color4ui)(GLuint, GLuint, GLuint, GLuint);
  88.    void (GLAPIENTRY * Color4uiv)(const GLuint *);
  89.    void (GLAPIENTRY * Color4us)(GLushort, GLushort, GLushort, GLushort);
  90.    void (GLAPIENTRY * Color4usv)(const GLushort *);
  91.    void (GLAPIENTRY * EdgeFlag)(GLboolean);
  92.    void (GLAPIENTRY * EdgeFlagv)(const GLboolean *);
  93.    void (GLAPIENTRY * End)(void);
  94.    void (GLAPIENTRY * Indexd)(GLdouble);
  95.    void (GLAPIENTRY * Indexdv)(const GLdouble *);
  96.    void (GLAPIENTRY * Indexf)(GLfloat);
  97.    void (GLAPIENTRY * Indexfv)(const GLfloat *);
  98.    void (GLAPIENTRY * Indexi)(GLint);
  99.    void (GLAPIENTRY * Indexiv)(const GLint *);
  100.    void (GLAPIENTRY * Indexs)(GLshort);
  101.    void (GLAPIENTRY * Indexsv)(const GLshort *);
  102.    void (GLAPIENTRY * Normal3b)(GLbyte, GLbyte, GLbyte);
  103.    void (GLAPIENTRY * Normal3bv)(const GLbyte *);
  104.    void (GLAPIENTRY * Normal3d)(GLdouble, GLdouble, GLdouble);
  105.    void (GLAPIENTRY * Normal3dv)(const GLdouble *);
  106.    void (GLAPIENTRY * Normal3f)(GLfloat, GLfloat, GLfloat);
  107.    void (GLAPIENTRY * Normal3fv)(const GLfloat *);
  108.    void (GLAPIENTRY * Normal3i)(GLint, GLint, GLint);
  109.    void (GLAPIENTRY * Normal3iv)(const GLint *);
  110.    void (GLAPIENTRY * Normal3s)(GLshort, GLshort, GLshort);
  111.    void (GLAPIENTRY * Normal3sv)(const GLshort *);
  112.    void (GLAPIENTRY * RasterPos2d)(GLdouble, GLdouble);
  113.    void (GLAPIENTRY * RasterPos2dv)(const GLdouble *);
  114.    void (GLAPIENTRY * RasterPos2f)(GLfloat, GLfloat);
  115.    void (GLAPIENTRY * RasterPos2fv)(const GLfloat *);
  116.    void (GLAPIENTRY * RasterPos2i)(GLint, GLint);
  117.    void (GLAPIENTRY * RasterPos2iv)(const GLint *);
  118.    void (GLAPIENTRY * RasterPos2s)(GLshort, GLshort);
  119.    void (GLAPIENTRY * RasterPos2sv)(const GLshort *);
  120.    void (GLAPIENTRY * RasterPos3d)(GLdouble, GLdouble, GLdouble);
  121.    void (GLAPIENTRY * RasterPos3dv)(const GLdouble *);
  122.    void (GLAPIENTRY * RasterPos3f)(GLfloat, GLfloat, GLfloat);
  123.    void (GLAPIENTRY * RasterPos3fv)(const GLfloat *);
  124.    void (GLAPIENTRY * RasterPos3i)(GLint, GLint, GLint);
  125.    void (GLAPIENTRY * RasterPos3iv)(const GLint *);
  126.    void (GLAPIENTRY * RasterPos3s)(GLshort, GLshort, GLshort);
  127.    void (GLAPIENTRY * RasterPos3sv)(const GLshort *);
  128.    void (GLAPIENTRY * RasterPos4d)(GLdouble, GLdouble, GLdouble, GLdouble);
  129.    void (GLAPIENTRY * RasterPos4dv)(const GLdouble *);
  130.    void (GLAPIENTRY * RasterPos4f)(GLfloat, GLfloat, GLfloat, GLfloat);
  131.    void (GLAPIENTRY * RasterPos4fv)(const GLfloat *);
  132.    void (GLAPIENTRY * RasterPos4i)(GLint, GLint, GLint, GLint);
  133.    void (GLAPIENTRY * RasterPos4iv)(const GLint *);
  134.    void (GLAPIENTRY * RasterPos4s)(GLshort, GLshort, GLshort, GLshort);
  135.    void (GLAPIENTRY * RasterPos4sv)(const GLshort *);
  136.    void (GLAPIENTRY * Rectd)(GLdouble, GLdouble, GLdouble, GLdouble);
  137.    void (GLAPIENTRY * Rectdv)(const GLdouble *, const GLdouble *);
  138.    void (GLAPIENTRY * Rectf)(GLfloat, GLfloat, GLfloat, GLfloat);
  139.    void (GLAPIENTRY * Rectfv)(const GLfloat *, const GLfloat *);
  140.    void (GLAPIENTRY * Recti)(GLint, GLint, GLint, GLint);
  141.    void (GLAPIENTRY * Rectiv)(const GLint *, const GLint *);
  142.    void (GLAPIENTRY * Rects)(GLshort, GLshort, GLshort, GLshort);
  143.    void (GLAPIENTRY * Rectsv)(const GLshort *, const GLshort *);
  144.    void (GLAPIENTRY * TexCoord1d)(GLdouble);
  145.    void (GLAPIENTRY * TexCoord1dv)(const GLdouble *);
  146.    void (GLAPIENTRY * TexCoord1f)(GLfloat);
  147.    void (GLAPIENTRY * TexCoord1fv)(const GLfloat *);
  148.    void (GLAPIENTRY * TexCoord1i)(GLint);
  149.    void (GLAPIENTRY * TexCoord1iv)(const GLint *);
  150.    void (GLAPIENTRY * TexCoord1s)(GLshort);
  151.    void (GLAPIENTRY * TexCoord1sv)(const GLshort *);
  152.    void (GLAPIENTRY * TexCoord2d)(GLdouble, GLdouble);
  153.    void (GLAPIENTRY * TexCoord2dv)(const GLdouble *);
  154.    void (GLAPIENTRY * TexCoord2f)(GLfloat, GLfloat);
  155.    void (GLAPIENTRY * TexCoord2fv)(const GLfloat *);
  156.    void (GLAPIENTRY * TexCoord2i)(GLint, GLint);
  157.    void (GLAPIENTRY * TexCoord2iv)(const GLint *);
  158.    void (GLAPIENTRY * TexCoord2s)(GLshort, GLshort);
  159.    void (GLAPIENTRY * TexCoord2sv)(const GLshort *);
  160.    void (GLAPIENTRY * TexCoord3d)(GLdouble, GLdouble, GLdouble);
  161.    void (GLAPIENTRY * TexCoord3dv)(const GLdouble *);
  162.    void (GLAPIENTRY * TexCoord3f)(GLfloat, GLfloat, GLfloat);
  163.    void (GLAPIENTRY * TexCoord3fv)(const GLfloat *);
  164.    void (GLAPIENTRY * TexCoord3i)(GLint, GLint, GLint);
  165.    void (GLAPIENTRY * TexCoord3iv)(const GLint *);
  166.    void (GLAPIENTRY * TexCoord3s)(GLshort, GLshort, GLshort);
  167.    void (GLAPIENTRY * TexCoord3sv)(const GLshort *);
  168.    void (GLAPIENTRY * TexCoord4d)(GLdouble, GLdouble, GLdouble, GLdouble);
  169.    void (GLAPIENTRY * TexCoord4dv)(const GLdouble *);
  170.    void (GLAPIENTRY * TexCoord4f)(GLfloat, GLfloat, GLfloat, GLfloat);
  171.    void (GLAPIENTRY * TexCoord4fv)(const GLfloat *);
  172.    void (GLAPIENTRY * TexCoord4i)(GLint, GLint, GLint, GLint);
  173.    void (GLAPIENTRY * TexCoord4iv)(const GLint *);
  174.    void (GLAPIENTRY * TexCoord4s)(GLshort, GLshort, GLshort, GLshort);
  175.    void (GLAPIENTRY * TexCoord4sv)(const GLshort *);
  176.    void (GLAPIENTRY * Vertex2d)(GLdouble, GLdouble);
  177.    void (GLAPIENTRY * Vertex2dv)(const GLdouble *);
  178.    void (GLAPIENTRY * Vertex2f)(GLfloat, GLfloat);
  179.    void (GLAPIENTRY * Vertex2fv)(const GLfloat *);
  180.    void (GLAPIENTRY * Vertex2i)(GLint, GLint);
  181.    void (GLAPIENTRY * Vertex2iv)(const GLint *);
  182.    void (GLAPIENTRY * Vertex2s)(GLshort, GLshort);
  183.    void (GLAPIENTRY * Vertex2sv)(const GLshort *);
  184.    void (GLAPIENTRY * Vertex3d)(GLdouble, GLdouble, GLdouble);
  185.    void (GLAPIENTRY * Vertex3dv)(const GLdouble *);
  186.    void (GLAPIENTRY * Vertex3f)(GLfloat, GLfloat, GLfloat);
  187.    void (GLAPIENTRY * Vertex3fv)(const GLfloat *);
  188.    void (GLAPIENTRY * Vertex3i)(GLint, GLint, GLint);
  189.    void (GLAPIENTRY * Vertex3iv)(const GLint *);
  190.    void (GLAPIENTRY * Vertex3s)(GLshort, GLshort, GLshort);
  191.    void (GLAPIENTRY * Vertex3sv)(const GLshort *);
  192.    void (GLAPIENTRY * Vertex4d)(GLdouble, GLdouble, GLdouble, GLdouble);
  193.    void (GLAPIENTRY * Vertex4dv)(const GLdouble *);
  194.    void (GLAPIENTRY * Vertex4f)(GLfloat, GLfloat, GLfloat, GLfloat);
  195.    void (GLAPIENTRY * Vertex4fv)(const GLfloat *);
  196.    void (GLAPIENTRY * Vertex4i)(GLint, GLint, GLint, GLint);
  197.    void (GLAPIENTRY * Vertex4iv)(const GLint *);
  198.    void (GLAPIENTRY * Vertex4s)(GLshort, GLshort, GLshort, GLshort);
  199.    void (GLAPIENTRY * Vertex4sv)(const GLshort *);
  200.    void (GLAPIENTRY * ClipPlane)(GLenum, const GLdouble *);
  201.    void (GLAPIENTRY * ColorMaterial)(GLenum, GLenum);
  202.    void (GLAPIENTRY * CullFace)(GLenum);
  203.    void (GLAPIENTRY * Fogf)(GLenum, GLfloat);
  204.    void (GLAPIENTRY * Fogfv)(GLenum, const GLfloat *);
  205.    void (GLAPIENTRY * Fogi)(GLenum, GLint);
  206.    void (GLAPIENTRY * Fogiv)(GLenum, const GLint *);
  207.    void (GLAPIENTRY * FrontFace)(GLenum);
  208.    void (GLAPIENTRY * Hint)(GLenum, GLenum);
  209.    void (GLAPIENTRY * Lightf)(GLenum, GLenum, GLfloat);
  210.    void (GLAPIENTRY * Lightfv)(GLenum, GLenum, const GLfloat *);
  211.    void (GLAPIENTRY * Lighti)(GLenum, GLenum, GLint);
  212.    void (GLAPIENTRY * Lightiv)(GLenum, GLenum, const GLint *);
  213.    void (GLAPIENTRY * LightModelf)(GLenum, GLfloat);
  214.    void (GLAPIENTRY * LightModelfv)(GLenum, const GLfloat *);
  215.    void (GLAPIENTRY * LightModeli)(GLenum, GLint);
  216.    void (GLAPIENTRY * LightModeliv)(GLenum, const GLint *);
  217.    void (GLAPIENTRY * LineStipple)(GLint, GLushort);
  218.    void (GLAPIENTRY * LineWidth)(GLfloat);
  219.    void (GLAPIENTRY * Materialf)(GLenum, GLenum, GLfloat);
  220.    void (GLAPIENTRY * Materialfv)(GLenum, GLenum, const GLfloat *);
  221.    void (GLAPIENTRY * Materiali)(GLenum, GLenum, GLint);
  222.    void (GLAPIENTRY * Materialiv)(GLenum, GLenum, const GLint *);
  223.    void (GLAPIENTRY * PointSize)(GLfloat);
  224.    void (GLAPIENTRY * PolygonMode)(GLenum, GLenum);
  225.    void (GLAPIENTRY * PolygonStipple)(const GLubyte *);
  226.    void (GLAPIENTRY * Scissor)(GLint, GLint, GLsizei, GLsizei);
  227.    void (GLAPIENTRY * ShadeModel)(GLenum);
  228.    void (GLAPIENTRY * TexParameterf)(GLenum, GLenum, GLfloat);
  229.    void (GLAPIENTRY * TexParameterfv)(GLenum, GLenum, const GLfloat *);
  230.    void (GLAPIENTRY * TexParameteri)(GLenum, GLenum, GLint);
  231.    void (GLAPIENTRY * TexParameteriv)(GLenum, GLenum, const GLint *);
  232.    void (GLAPIENTRY * TexImage1D)(GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
  233.    void (GLAPIENTRY * TexImage2D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
  234.    void (GLAPIENTRY * TexEnvf)(GLenum, GLenum, GLfloat);
  235.    void (GLAPIENTRY * TexEnvfv)(GLenum, GLenum, const GLfloat *);
  236.    void (GLAPIENTRY * TexEnvi)(GLenum, GLenum, GLint);
  237.    void (GLAPIENTRY * TexEnviv)(GLenum, GLenum, const GLint *);
  238.    void (GLAPIENTRY * TexGend)(GLenum, GLenum, GLdouble);
  239.    void (GLAPIENTRY * TexGendv)(GLenum, GLenum, const GLdouble *);
  240.    void (GLAPIENTRY * TexGenf)(GLenum, GLenum, GLfloat);
  241.    void (GLAPIENTRY * TexGenfv)(GLenum, GLenum, const GLfloat *);
  242.    void (GLAPIENTRY * TexGeni)(GLenum, GLenum, GLint);
  243.    void (GLAPIENTRY * TexGeniv)(GLenum, GLenum, const GLint *);
  244.    void (GLAPIENTRY * FeedbackBuffer)(GLsizei, GLenum, GLfloat *);
  245.    void (GLAPIENTRY * SelectBuffer)(GLsizei, GLuint *);
  246.    GLint (GLAPIENTRY * RenderMode)(GLenum);
  247.    void (GLAPIENTRY * InitNames)(void);
  248.    void (GLAPIENTRY * LoadName)(GLuint);
  249.    void (GLAPIENTRY * PassThrough)(GLfloat);
  250.    void (GLAPIENTRY * PopName)(void);
  251.    void (GLAPIENTRY * PushName)(GLuint);
  252.    void (GLAPIENTRY * DrawBuffer)(GLenum);
  253.    void (GLAPIENTRY * Clear)(GLbitfield);
  254.    void (GLAPIENTRY * ClearAccum)(GLfloat, GLfloat, GLfloat, GLfloat);
  255.    void (GLAPIENTRY * ClearIndex)(GLfloat);
  256.    void (GLAPIENTRY * ClearColor)(GLclampf, GLclampf, GLclampf, GLclampf);
  257.    void (GLAPIENTRY * ClearStencil)(GLint);
  258.    void (GLAPIENTRY * ClearDepth)(GLclampd);
  259.    void (GLAPIENTRY * StencilMask)(GLuint);
  260.    void (GLAPIENTRY * ColorMask)(GLboolean, GLboolean, GLboolean, GLboolean);
  261.    void (GLAPIENTRY * DepthMask)(GLboolean);
  262.    void (GLAPIENTRY * IndexMask)(GLuint);
  263.    void (GLAPIENTRY * Accum)(GLenum, GLfloat);
  264.    void (GLAPIENTRY * Disable)(GLenum);
  265.    void (GLAPIENTRY * Enable)(GLenum);
  266.    void (GLAPIENTRY * Finish)(void);
  267.    void (GLAPIENTRY * Flush)(void);
  268.    void (GLAPIENTRY * PopAttrib)(void);
  269.    void (GLAPIENTRY * PushAttrib)(GLbitfield);
  270.    void (GLAPIENTRY * Map1d)(GLenum, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
  271.    void (GLAPIENTRY * Map1f)(GLenum, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
  272.    void (GLAPIENTRY * Map2d)(GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
  273.    void (GLAPIENTRY * Map2f)(GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
  274.    void (GLAPIENTRY * MapGrid1d)(GLint, GLdouble, GLdouble);
  275.    void (GLAPIENTRY * MapGrid1f)(GLint, GLfloat, GLfloat);
  276.    void (GLAPIENTRY * MapGrid2d)(GLint, GLdouble, GLdouble, GLint, GLdouble, GLdouble);
  277.    void (GLAPIENTRY * MapGrid2f)(GLint, GLfloat, GLfloat, GLint, GLfloat, GLfloat);
  278.    void (GLAPIENTRY * EvalCoord1d)(GLdouble);
  279.    void (GLAPIENTRY * EvalCoord1dv)(const GLdouble *);
  280.    void (GLAPIENTRY * EvalCoord1f)(GLfloat);
  281.    void (GLAPIENTRY * EvalCoord1fv)(const GLfloat *);
  282.    void (GLAPIENTRY * EvalCoord2d)(GLdouble, GLdouble);
  283.    void (GLAPIENTRY * EvalCoord2dv)(const GLdouble *);
  284.    void (GLAPIENTRY * EvalCoord2f)(GLfloat, GLfloat);
  285.    void (GLAPIENTRY * EvalCoord2fv)(const GLfloat *);
  286.    void (GLAPIENTRY * EvalMesh1)(GLenum, GLint, GLint);
  287.    void (GLAPIENTRY * EvalPoint1)(GLint);
  288.    void (GLAPIENTRY * EvalMesh2)(GLenum, GLint, GLint, GLint, GLint);
  289.    void (GLAPIENTRY * EvalPoint2)(GLint, GLint);
  290.    void (GLAPIENTRY * AlphaFunc)(GLenum, GLclampf);
  291.    void (GLAPIENTRY * BlendFunc)(GLenum, GLenum);
  292.    void (GLAPIENTRY * LogicOp)(GLenum);
  293.    void (GLAPIENTRY * StencilFunc)(GLenum, GLint, GLuint);
  294.    void (GLAPIENTRY * StencilOp)(GLenum, GLenum, GLenum);
  295.    void (GLAPIENTRY * DepthFunc)(GLenum);
  296.    void (GLAPIENTRY * PixelZoom)(GLfloat, GLfloat);
  297.    void (GLAPIENTRY * PixelTransferf)(GLenum, GLfloat);
  298.    void (GLAPIENTRY * PixelTransferi)(GLenum, GLint);
  299.    void (GLAPIENTRY * PixelStoref)(GLenum, GLfloat);
  300.    void (GLAPIENTRY * PixelStorei)(GLenum, GLint);
  301.    void (GLAPIENTRY * PixelMapfv)(GLenum, GLint, const GLfloat *);
  302.    void (GLAPIENTRY * PixelMapuiv)(GLenum, GLint, const GLuint *);
  303.    void (GLAPIENTRY * PixelMapusv)(GLenum, GLint, const GLushort *);
  304.    void (GLAPIENTRY * ReadBuffer)(GLenum);
  305.    void (GLAPIENTRY * CopyPixels)(GLint, GLint, GLsizei, GLsizei, GLenum);
  306.    void (GLAPIENTRY * ReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid *);
  307.    void (GLAPIENTRY * DrawPixels)(GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
  308.    void (GLAPIENTRY * GetBooleanv)(GLenum, GLboolean *);
  309.    void (GLAPIENTRY * GetClipPlane)(GLenum, GLdouble *);
  310.    void (GLAPIENTRY * GetDoublev)(GLenum, GLdouble *);
  311.    GLenum (GLAPIENTRY * GetError)(void);
  312.    void (GLAPIENTRY * GetFloatv)(GLenum, GLfloat *);
  313.    void (GLAPIENTRY * GetIntegerv)(GLenum, GLint *);
  314.    void (GLAPIENTRY * GetLightfv)(GLenum, GLenum, GLfloat *);
  315.    void (GLAPIENTRY * GetLightiv)(GLenum, GLenum, GLint *);
  316.    void (GLAPIENTRY * GetMapdv)(GLenum, GLenum, GLdouble *);
  317.    void (GLAPIENTRY * GetMapfv)(GLenum, GLenum, GLfloat *);
  318.    void (GLAPIENTRY * GetMapiv)(GLenum, GLenum, GLint *);
  319.    void (GLAPIENTRY * GetMaterialfv)(GLenum, GLenum, GLfloat *);
  320.    void (GLAPIENTRY * GetMaterialiv)(GLenum, GLenum, GLint *);
  321.    void (GLAPIENTRY * GetPixelMapfv)(GLenum, GLfloat *);
  322.    void (GLAPIENTRY * GetPixelMapuiv)(GLenum, GLuint *);
  323.    void (GLAPIENTRY * GetPixelMapusv)(GLenum, GLushort *);
  324.    void (GLAPIENTRY * GetPolygonStipple)(GLubyte *);
  325.    const GLubyte * (GLAPIENTRY * GetString)(GLenum);
  326.    void (GLAPIENTRY * GetTexEnvfv)(GLenum, GLenum, GLfloat *);
  327.    void (GLAPIENTRY * GetTexEnviv)(GLenum, GLenum, GLint *);
  328.    void (GLAPIENTRY * GetTexGendv)(GLenum, GLenum, GLdouble *);
  329.    void (GLAPIENTRY * GetTexGenfv)(GLenum, GLenum, GLfloat *);
  330.    void (GLAPIENTRY * GetTexGeniv)(GLenum, GLenum, GLint *);
  331.    void (GLAPIENTRY * GetTexImage)(GLenum, GLint, GLenum, GLenum, GLvoid *);
  332.    void (GLAPIENTRY * GetTexParameterfv)(GLenum, GLenum, GLfloat *);
  333.    void (GLAPIENTRY * GetTexParameteriv)(GLenum, GLenum, GLint *);
  334.    void (GLAPIENTRY * GetTexLevelParameterfv)(GLenum, GLint, GLenum, GLfloat *);
  335.    void (GLAPIENTRY * GetTexLevelParameteriv)(GLenum, GLint, GLenum, GLint *);
  336.    GLboolean (GLAPIENTRY * IsEnabled)(GLenum);
  337.    GLboolean (GLAPIENTRY * IsList)(GLuint);
  338.    void (GLAPIENTRY * DepthRange)(GLclampd, GLclampd);
  339.    void (GLAPIENTRY * Frustum)(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
  340.    void (GLAPIENTRY * LoadIdentity)(void);
  341.    void (GLAPIENTRY * LoadMatrixf)(const GLfloat *);
  342.    void (GLAPIENTRY * LoadMatrixd)(const GLdouble *);
  343.    void (GLAPIENTRY * MatrixMode)(GLenum);
  344.    void (GLAPIENTRY * MultMatrixf)(const GLfloat *);
  345.    void (GLAPIENTRY * MultMatrixd)(const GLdouble *);
  346.    void (GLAPIENTRY * Ortho)(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
  347.    void (GLAPIENTRY * PopMatrix)(void);
  348.    void (GLAPIENTRY * PushMatrix)(void);
  349.    void (GLAPIENTRY * Rotated)(GLdouble, GLdouble, GLdouble, GLdouble);
  350.    void (GLAPIENTRY * Rotatef)(GLfloat, GLfloat, GLfloat, GLfloat);
  351.    void (GLAPIENTRY * Scaled)(GLdouble, GLdouble, GLdouble);
  352.    void (GLAPIENTRY * Scalef)(GLfloat, GLfloat, GLfloat);
  353.    void (GLAPIENTRY * Translated)(GLdouble, GLdouble, GLdouble);
  354.    void (GLAPIENTRY * Translatef)(GLfloat, GLfloat, GLfloat);
  355.    void (GLAPIENTRY * Viewport)(GLint, GLint, GLsizei, GLsizei);
  356.    void (GLAPIENTRY * ArrayElement)(GLint);
  357.    void (GLAPIENTRY * BindTexture)(GLenum, GLuint);
  358.    void (GLAPIENTRY * ColorPointer)(GLint, GLenum, GLsizei, const GLvoid *);
  359.    void (GLAPIENTRY * DisableClientState)(GLenum);
  360.    void (GLAPIENTRY * DrawArrays)(GLenum, GLint, GLsizei);
  361.    void (GLAPIENTRY * DrawElements)(GLenum, GLsizei, GLenum, const GLvoid *);
  362.    void (GLAPIENTRY * EdgeFlagPointer)(GLsizei, const GLvoid *);
  363.    void (GLAPIENTRY * EnableClientState)(GLenum);
  364.    void (GLAPIENTRY * IndexPointer)(GLenum, GLsizei, const GLvoid *);
  365.    void (GLAPIENTRY * Indexub)(GLubyte);
  366.    void (GLAPIENTRY * Indexubv)(const GLubyte *);
  367.    void (GLAPIENTRY * InterleavedArrays)(GLenum, GLsizei, const GLvoid *);
  368.    void (GLAPIENTRY * NormalPointer)(GLenum, GLsizei, const GLvoid *);
  369.    void (GLAPIENTRY * PolygonOffset)(GLfloat, GLfloat);
  370.    void (GLAPIENTRY * TexCoordPointer)(GLint, GLenum, GLsizei, const GLvoid *);
  371.    void (GLAPIENTRY * VertexPointer)(GLint, GLenum, GLsizei, const GLvoid *);
  372.    GLboolean (GLAPIENTRY * AreTexturesResident)(GLsizei, const GLuint *, GLboolean *);
  373.    void (GLAPIENTRY * CopyTexImage1D)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
  374.    void (GLAPIENTRY * CopyTexImage2D)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
  375.    void (GLAPIENTRY * CopyTexSubImage1D)(GLenum, GLint, GLint, GLint, GLint, GLsizei);
  376.    void (GLAPIENTRY * CopyTexSubImage2D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
  377.    void (GLAPIENTRY * DeleteTextures)(GLsizei, const GLuint *);
  378.    void (GLAPIENTRY * GenTextures)(GLsizei, GLuint *);
  379.    void (GLAPIENTRY * GetPointerv)(GLenum, GLvoid **);
  380.    GLboolean (GLAPIENTRY * IsTexture)(GLuint);
  381.    void (GLAPIENTRY * PrioritizeTextures)(GLsizei, const GLuint *, const GLclampf *);
  382.    void (GLAPIENTRY * TexSubImage1D)(GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
  383.    void (GLAPIENTRY * TexSubImage2D)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
  384.    void (GLAPIENTRY * PopClientAttrib)(void);
  385.    void (GLAPIENTRY * PushClientAttrib)(GLbitfield);
  386. };
  387.  
  388. typedef struct __GLdispatchTableRec GLDISPATCHTABLE;
  389.  
  390. typedef struct _GLCLTPROCTABLE
  391. {
  392.    int cEntries;
  393.    GLDISPATCHTABLE glDispatchTable;
  394. } GLCLTPROCTABLE, * PGLCLTPROCTABLE;
  395.  
  396. typedef VOID (APIENTRY * PFN_SETPROCTABLE)(PGLCLTPROCTABLE);
  397.  
  398. /**
  399.  * Presentation data passed to opengl32!wglCbPresentBuffers.
  400.  *
  401.  * Pure software drivers don't need to worry about this -- if they stick to the
  402.  * GDI API then will integrate with the Desktop Window Manager (DWM) without
  403.  * problems. Hardware drivers, however, cannot present directly to the primary
  404.  * surface while the DWM is active, as DWM gets exclusive access to the primary
  405.  * surface.
  406.  *
  407.  * Proper DWM integration requires:
  408.  * - advertise the PFD_SUPPORT_COMPOSITION flag
  409.  * - redirect glFlush/glfinish/wglSwapBuffers into a surface shared with the
  410.  * DWM process.
  411.  *
  412.  * @sa http://www.opengl.org/pipeline/article/vol003_7/
  413.  * @sa http://blogs.msdn.com/greg_schechter/archive/2006/05/02/588934.aspx
  414.  */
  415. typedef struct _GLCBPRESENTBUFFERSDATA
  416. {
  417.    /**
  418.     * wglCbPresentBuffers enforces this to be 2.
  419.     */
  420.    DWORD magic1;
  421.  
  422.    /**
  423.     * wglCbPresentBuffers enforces to be 0 or 1, but it is most commonly
  424.     * set to 0.
  425.     */
  426.    DWORD magic2;
  427.  
  428.    /**
  429.     * Locally unique identifier (LUID) of the graphics adapter.
  430.     *
  431.     * This should contain the value returned by D3DKMTOpenAdapterFromHdc. It
  432.     * is passed to dwmapi!DwmpDxGetWindowSharedSurface in order to obtain
  433.     * the shared surface handle for the bound drawable (window).
  434.     *
  435.     * @sa http://msdn.microsoft.com/en-us/library/ms799177.aspx
  436.     */
  437.    LUID AdapterLuid;
  438.  
  439.    /**
  440.     * This is passed unmodified to DrvPresentBuffers
  441.     */
  442.    LPVOID pPrivateData;
  443.  
  444.    /**
  445.     * Client area rectangle to update, relative to the window upper-left corner.
  446.     */
  447.    RECT rect;
  448. } GLCBPRESENTBUFFERSDATA, *PGLCBPRESENTBUFFERSDATA;
  449.  
  450. /**
  451.  * Callbacks supplied to DrvSetCallbackProcs by the OpenGL runtime.
  452.  *
  453.  * Pointers to several callback functions in opengl32.dll.
  454.  */
  455. typedef struct _GLCALLBACKTABLE
  456. {
  457.    /**
  458.     * Set per-thread driver private data.
  459.     *
  460.     * Unused.
  461.     **/
  462.    void (APIENTRY *wglCbSetCurrentValue)(void *pvData);
  463.  
  464.    /**
  465.     * Get per-thread private data.
  466.     *
  467.     * Unused.
  468.     */
  469.    void * (APIENTRY *wglCbGetCurrentValue)(void);
  470.  
  471.    /**
  472.     * Get the ICD GHGLRC handle corresponding to the specified hglrc handle.
  473.     *
  474.     * Currently unused.
  475.     */
  476.    DHGLRC (APIENTRY *wglCbGetDhglrc)(HGLRC hglrc);
  477.  
  478.    /** Unused */
  479.    PROC wglCbGetDdHandle;
  480.  
  481.    /**
  482.     * Queue a present composition.
  483.     *
  484.     * Makes the runtime call DrvPresentBuffers with the composition information.
  485.     */
  486.    BOOL (APIENTRY *wglCbPresentBuffers)(HDC hdc, PGLCBPRESENTBUFFERSDATA data);
  487.  
  488. } GLCALLBACKTABLE;
  489.  
  490. typedef struct _GLPRESENTBUFFERSDATA
  491. {
  492.    /**
  493.     * The shared surface handle.
  494.     *
  495.     * Return by dwmapi!DwmpDxGetWindowSharedSurface.
  496.     *
  497.     * @sa http://channel9.msdn.com/forums/TechOff/251261-Help-Getting-the-shared-window-texture-out-of-DWM-/
  498.     */
  499.    HANDLE hSharedSurface;
  500.  
  501.    LUID AdapterLuid;
  502.  
  503.    /**
  504.     * Present history token.
  505.     *
  506.     * This is returned by dwmapi!DwmpDxGetWindowSharedSurface and
  507.     * should be passed to D3DKMTRender in D3DKMT_RENDER::PresentHistoryToken.
  508.     *
  509.     * @sa http://msdn.microsoft.com/en-us/library/ms799176.aspx
  510.     */
  511.    ULONGLONG PresentHistoryToken;
  512.  
  513.    /** Same as GLCBPRESENTBUFFERSDATA::pPrivateData */
  514.    LPVOID pPrivateData;
  515. } GLPRESENTBUFFERSDATA, *PGLPRESENTBUFFERSDATA;
  516.  
  517. BOOL APIENTRY
  518. DrvCopyContext(
  519.    DHGLRC dhrcSource,
  520.    DHGLRC dhrcDest,
  521.    UINT fuMask );
  522.  
  523. DHGLRC APIENTRY
  524. DrvCreateLayerContext(
  525.    HDC hdc,
  526.    INT iLayerPlane );
  527.  
  528. DHGLRC APIENTRY
  529. DrvCreateContext(
  530.    HDC hdc );
  531.  
  532. BOOL APIENTRY
  533. DrvDeleteContext(
  534.    DHGLRC dhglrc );
  535.  
  536. BOOL APIENTRY
  537. DrvDescribeLayerPlane(
  538.    HDC hdc,
  539.    INT iPixelFormat,
  540.    INT iLayerPlane,
  541.    UINT nBytes,
  542.    LPLAYERPLANEDESCRIPTOR plpd );
  543.  
  544. LONG APIENTRY
  545. DrvDescribePixelFormat(
  546.    HDC hdc,
  547.    INT iPixelFormat,
  548.    ULONG cjpfd,
  549.    PIXELFORMATDESCRIPTOR *ppfd );
  550.  
  551. int APIENTRY
  552. DrvGetLayerPaletteEntries(
  553.    HDC hdc,
  554.    INT iLayerPlane,
  555.    INT iStart,
  556.    INT cEntries,
  557.    COLORREF *pcr );
  558.  
  559. PROC APIENTRY
  560. DrvGetProcAddress(
  561.    LPCSTR lpszProc );
  562.  
  563. BOOL APIENTRY
  564. DrvPresentBuffers(HDC hdc, PGLPRESENTBUFFERSDATA data);
  565.  
  566. BOOL APIENTRY
  567. DrvRealizeLayerPalette(
  568.    HDC hdc,
  569.    INT iLayerPlane,
  570.    BOOL bRealize );
  571.  
  572. BOOL APIENTRY
  573. DrvReleaseContext(
  574.    DHGLRC dhglrc );
  575.  
  576. void APIENTRY
  577. DrvSetCallbackProcs(
  578.    INT nProcs,
  579.    PROC *pProcs );
  580.  
  581. PGLCLTPROCTABLE APIENTRY
  582. DrvSetContext(
  583.    HDC hdc,
  584.    DHGLRC dhglrc,
  585.    PFN_SETPROCTABLE pfnSetProcTable );
  586.  
  587. int APIENTRY
  588. DrvSetLayerPaletteEntries(
  589.    HDC hdc,
  590.    INT iLayerPlane,
  591.    INT iStart,
  592.    INT cEntries,
  593.    CONST COLORREF *pcr );
  594.  
  595. BOOL APIENTRY
  596. DrvSetPixelFormat(
  597.    HDC hdc,
  598.    LONG iPixelFormat );
  599.  
  600. BOOL APIENTRY
  601. DrvShareLists(
  602.    DHGLRC dhglrc1,
  603.    DHGLRC dhglrc2 );
  604.  
  605. BOOL APIENTRY
  606. DrvSwapBuffers(
  607.    HDC hdc );
  608.  
  609. BOOL APIENTRY
  610. DrvSwapLayerBuffers(
  611.    HDC hdc,
  612.    UINT fuPlanes );
  613.  
  614. BOOL APIENTRY
  615. DrvValidateVersion(
  616.    ULONG ulVersion );
  617.  
  618. #endif /* STW_ICD_H */
  619.