-/*\r
- * Mesa 3-D graphics library\r
- * Version: 6.1\r
- *\r
- * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.\r
- *\r
- * Permission is hereby granted, free of charge, to any person obtaining a\r
- * copy of this software and associated documentation files (the "Software"),\r
- * to deal in the Software without restriction, including without limitation\r
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
- * and/or sell copies of the Software, and to permit persons to whom the\r
- * Software is furnished to do so, subject to the following conditions:\r
- *\r
- * The above copyright notice and this permission notice shall be included\r
- * in all copies or substantial portions of the Software.\r
- *\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\r
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN\r
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
- */\r
-\r
-/*\r
- * File name: icd.c\r
- * Author: Gregor Anich <blight@blight.eu.org>\r
- *\r
- * ICD (Installable Client Driver) interface.\r
- * Based on the windows GDI/WGL driver.\r
- */\r
-\r
-#ifdef WIN32\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-#include <windows.h>\r
-#define GL_GLEXT_PROTOTYPES\r
-#include "GL/gl.h"\r
-#include "GL/glext.h"\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#include <stdio.h>\r
-#include <tchar.h>\r
-#include "../gdi/wmesadef.h"\r
-#include "GL/wmesa.h"\r
-#include "mtypes.h"\r
-#include "glapi.h"\r
-\r
-#define MAX_MESA_ATTRS 20\r
-\r
-\r
-typedef struct _icdTable {\r
- DWORD size;\r
- PROC table[336];\r
-} ICDTABLE, *PICDTABLE;\r
-\r
-static ICDTABLE icdTable = { 336, {\r
-#define ICD_ENTRY(func) (PROC)mgl##func,\r
-#include "icdlist.h"\r
-#undef ICD_ENTRY\r
-} };\r
-\r
-struct __pixelformat__\r
-{\r
- PIXELFORMATDESCRIPTOR pfd;\r
- GLboolean doubleBuffered;\r
-};\r
-\r
-struct __pixelformat__ pix[] =\r
-{\r
- /* Double Buffer, alpha */\r
- { { sizeof(PIXELFORMATDESCRIPTOR), 1,\r
- PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER|PFD_SWAP_COPY,\r
- PFD_TYPE_RGBA,\r
- 24, 8, 0, 8, 8, 8, 16, 8, 24,\r
- 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0 },\r
- GL_TRUE\r
- },\r
- /* Single Buffer, alpha */\r
- { { sizeof(PIXELFORMATDESCRIPTOR), 1,\r
- PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL, /* | PFD_SUPPORT_GDI ? */\r
- PFD_TYPE_RGBA,\r
- 24, 8, 0, 8, 8, 8, 16, 8, 24,\r
- 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0 },\r
- GL_FALSE\r
- },\r
- /* Double Buffer, no alpha */\r
- { { sizeof(PIXELFORMATDESCRIPTOR), 1,\r
- PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER|PFD_SWAP_COPY,\r
- PFD_TYPE_RGBA,\r
- 24, 8, 0, 8, 8, 8, 16, 0, 0,\r
- 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0 },\r
- GL_TRUE\r
- },\r
- /* Single Buffer, no alpha */\r
- { { sizeof(PIXELFORMATDESCRIPTOR), 1,\r
- PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL, /* | PFD_SUPPORT_GDI ? */\r
- PFD_TYPE_RGBA,\r
- 24, 8, 0, 8, 8, 8, 16, 0, 0,\r
- 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0 },\r
- GL_FALSE\r
- },\r
-};\r
-\r
-int qt_pix = sizeof(pix) / sizeof(pix[0]);\r
-\r
-typedef struct {\r
- WMesaContext ctx;\r
- HDC hdc;\r
-} MesaWglCtx;\r
-\r
-#define MESAWGL_CTX_MAX_COUNT 20\r
-\r
-static MesaWglCtx wgl_ctx[MESAWGL_CTX_MAX_COUNT];\r
-\r
-static unsigned ctx_count = 0;\r
-static int ctx_current = -1;\r
-static unsigned curPFD = 0;\r
-\r
-WGLAPI BOOL GLAPIENTRY DrvCopyContext(HGLRC hglrcSrc,HGLRC hglrcDst,UINT mask)\r
-{\r
- return(FALSE);\r
-}\r
-\r
-WGLAPI HGLRC GLAPIENTRY DrvCreateContext(HDC hdc)\r
-{\r
- HWND hWnd;\r
- int i = 0;\r
-\r
- if(!(hWnd = WindowFromDC(hdc)))\r
- {\r
- SetLastError(0);\r
- return(NULL);\r
- }\r
- if (!ctx_count)\r
- {\r
- for(i=0;i<MESAWGL_CTX_MAX_COUNT;i++)\r
- {\r
- wgl_ctx[i].ctx = NULL;\r
- wgl_ctx[i].hdc = NULL;\r
- }\r
- }\r
- for( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )\r
- {\r
- if ( wgl_ctx[i].ctx == NULL )\r
- {\r
- wgl_ctx[i].ctx = WMesaCreateContext( hWnd, NULL, GL_TRUE,\r
- pix[curPFD-1].doubleBuffered, \r
- pix[curPFD-1].pfd.cAlphaBits ? GL_TRUE : GL_FALSE);\r
- if (wgl_ctx[i].ctx == NULL)\r
- break;\r
- wgl_ctx[i].hdc = hdc;\r
- ctx_count++;\r
- return ((HGLRC)wgl_ctx[i].ctx);\r
- }\r
- }\r
- SetLastError(0);\r
- return(NULL);\r
-}\r
-\r
-WGLAPI BOOL GLAPIENTRY DrvDeleteContext(HGLRC hglrc)\r
-{\r
- int i;\r
- for ( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )\r
- {\r
- if ( wgl_ctx[i].ctx == (PWMC) hglrc )\r
- {\r
- WMesaMakeCurrent((PWMC) hglrc);\r
- WMesaDestroyContext();\r
- wgl_ctx[i].ctx = NULL;\r
- wgl_ctx[i].hdc = NULL;\r
- ctx_count--;\r
- return(TRUE);\r
- }\r
- }\r
- SetLastError(0);\r
- return(FALSE);\r
-}\r
-\r
-WGLAPI HGLRC GLAPIENTRY DrvCreateLayerContext(HDC hdc,int iLayerPlane)\r
-{\r
- if (iLayerPlane == 0)\r
- return DrvCreateContext(hdc);\r
- SetLastError(0);\r
- return(NULL);\r
-}\r
-\r
-WGLAPI PICDTABLE GLAPIENTRY DrvSetContext(HDC hdc,HGLRC hglrc,void *callback)\r
-{\r
- int i;\r
-\r
- /* new code suggested by Andy Sy */\r
- if (!hdc || !hglrc) {\r
- WMesaMakeCurrent(NULL);\r
- ctx_current = -1;\r
- return NULL;\r
- }\r
-\r
- for ( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )\r
- {\r
- if ( wgl_ctx[i].ctx == (PWMC) hglrc )\r
- {\r
- wgl_ctx[i].hdc = hdc;\r
- WMesaMakeCurrent( (PWMC) hglrc );\r
- ctx_current = i;\r
- return &icdTable;\r
- }\r
- }\r
- return NULL;\r
-}\r
-\r
-WGLAPI void GLAPIENTRY DrvReleaseContext(HGLRC hglrc)\r
-{\r
- WMesaMakeCurrent(NULL);\r
- ctx_current = -1;\r
-}\r
-\r
-WGLAPI BOOL GLAPIENTRY DrvShareLists(HGLRC hglrc1,HGLRC hglrc2)\r
-{\r
- return(TRUE);\r
-}\r
-\r
-WGLAPI BOOL GLAPIENTRY DrvDescribeLayerPlane(HDC hdc,int iPixelFormat,\r
- int iLayerPlane,UINT nBytes,\r
- LPLAYERPLANEDESCRIPTOR plpd)\r
-{\r
- SetLastError(0);\r
- return(FALSE);\r
-}\r
-\r
-WGLAPI int GLAPIENTRY DrvSetLayerPaletteEntries(HDC hdc,int iLayerPlane,\r
- int iStart,int cEntries,\r
- CONST COLORREF *pcr)\r
-{\r
- SetLastError(0);\r
- return(0);\r
-}\r
-\r
-WGLAPI int GLAPIENTRY DrvGetLayerPaletteEntries(HDC hdc,int iLayerPlane,\r
- int iStart,int cEntries,\r
- COLORREF *pcr)\r
-{\r
- SetLastError(0);\r
- return(0);\r
-}\r
-\r
-WGLAPI BOOL GLAPIENTRY DrvRealizeLayerPalette(HDC hdc,int iLayerPlane,BOOL bRealize)\r
-{\r
- SetLastError(0);\r
- return(FALSE);\r
-}\r
-\r
-WGLAPI BOOL GLAPIENTRY DrvSwapLayerBuffers(HDC hdc,UINT fuPlanes)\r
-{\r
- if( !hdc )\r
- {\r
- WMesaSwapBuffers();\r
- return(TRUE);\r
- }\r
- SetLastError(0);\r
- return(FALSE);\r
-}\r
-\r
-WGLAPI int GLAPIENTRY DrvDescribePixelFormat(HDC hdc,int iPixelFormat,UINT nBytes,\r
- LPPIXELFORMATDESCRIPTOR ppfd)\r
-{\r
- int qt_valid_pix;\r
-\r
- qt_valid_pix = qt_pix;\r
- if(ppfd == NULL)\r
- return(qt_valid_pix);\r
- if(iPixelFormat < 1 || iPixelFormat > qt_valid_pix || nBytes != sizeof(PIXELFORMATDESCRIPTOR))\r
- {\r
- SetLastError(0);\r
- return(0);\r
- }\r
- *ppfd = pix[iPixelFormat - 1].pfd;\r
- return(qt_valid_pix);\r
-}\r
-\r
-/*\r
-* GetProcAddress - return the address of an appropriate extension\r
-*/\r
-WGLAPI PROC GLAPIENTRY DrvGetProcAddress(LPCSTR lpszProc)\r
-{\r
- PROC p = (PROC) _glapi_get_proc_address((const char *) lpszProc);\r
- if (p)\r
- return p;\r
-\r
- SetLastError(0);\r
- return(NULL);\r
-}\r
-\r
-WGLAPI BOOL GLAPIENTRY DrvSetPixelFormat(HDC hdc,int iPixelFormat)\r
-{\r
- int qt_valid_pix;\r
-\r
- qt_valid_pix = qt_pix;\r
- if(iPixelFormat < 1 || iPixelFormat > qt_valid_pix)\r
- {\r
- SetLastError(0);\r
- return(FALSE);\r
- }\r
- curPFD = iPixelFormat;\r
- return(TRUE);\r
-}\r
-\r
-WGLAPI BOOL GLAPIENTRY DrvSwapBuffers(HDC hdc)\r
-{\r
- if (ctx_current < 0)\r
- return FALSE;\r
-\r
- if(wgl_ctx[ctx_current].ctx == NULL) {\r
- SetLastError(0);\r
- return(FALSE);\r
- }\r
- WMesaSwapBuffers();\r
- return(TRUE);\r
-}\r
-\r
-WGLAPI BOOL GLAPIENTRY DrvValidateVersion(DWORD version)\r
-{\r
- return TRUE;\r
-}\r
-\r
-#endif /* WIN32 */\r
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.1
+ *
+ * Copyright (C) 1999-2004 Brian Paul 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, sublicense,
+ * 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 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 NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * File name: icd.c
+ * Author: Gregor Anich
+ *
+ * ICD (Installable Client Driver) interface.
+ * Based on the windows GDI/WGL driver.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <windows.h>
+#define GL_GLEXT_PROTOTYPES
+#include "GL/gl.h"
+#include "GL/glext.h"
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <stdio.h>
+#include <tchar.h>
+#include "../gdi/wmesadef.h"
+#include "GL/wmesa.h"
+#include "mtypes.h"
+#include "glapi.h"
+
+#define MAX_MESA_ATTRS 20
+
+
+typedef struct _icdTable {
+ DWORD size;
+ PROC table[336];
+} ICDTABLE, *PICDTABLE;
+
+#ifdef USE_MGL_NAMESPACE
+# define GL_FUNC(func) mgl##func
+#else
+# define GL_FUNC(func) gl##func
+#endif
+
+static ICDTABLE icdTable = { 336, {
+#define ICD_ENTRY(func) (PROC)GL_FUNC(func),
+#include "icdlist.h"
+#undef ICD_ENTRY
+} };
+
+struct __pixelformat__
+{
+ PIXELFORMATDESCRIPTOR pfd;
+ GLboolean doubleBuffered;
+};
+
+struct __pixelformat__ pix[] =
+{
+ /* Double Buffer, alpha */
+ { { sizeof(PIXELFORMATDESCRIPTOR), 1,
+ PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER|PFD_SWAP_COPY,
+ PFD_TYPE_RGBA,
+ 24, 8, 0, 8, 8, 8, 16, 8, 24,
+ 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0 },
+ GL_TRUE
+ },
+ /* Single Buffer, alpha */
+ { { sizeof(PIXELFORMATDESCRIPTOR), 1,
+ PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL, /* | PFD_SUPPORT_GDI ? */
+ PFD_TYPE_RGBA,
+ 24, 8, 0, 8, 8, 8, 16, 8, 24,
+ 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0 },
+ GL_FALSE
+ },
+ /* Double Buffer, no alpha */
+ { { sizeof(PIXELFORMATDESCRIPTOR), 1,
+ PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER|PFD_SWAP_COPY,
+ PFD_TYPE_RGBA,
+ 24, 8, 0, 8, 8, 8, 16, 0, 0,
+ 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0 },
+ GL_TRUE
+ },
+ /* Single Buffer, no alpha */
+ { { sizeof(PIXELFORMATDESCRIPTOR), 1,
+ PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL, /* | PFD_SUPPORT_GDI ? */
+ PFD_TYPE_RGBA,
+ 24, 8, 0, 8, 8, 8, 16, 0, 0,
+ 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0 },
+ GL_FALSE
+ },
+};
+
+int qt_pix = sizeof(pix) / sizeof(pix[0]);
+
+typedef struct {
+ WMesaContext ctx;
+ HDC hdc;
+} MesaWglCtx;
+
+#define MESAWGL_CTX_MAX_COUNT 20
+
+static MesaWglCtx wgl_ctx[MESAWGL_CTX_MAX_COUNT];
+
+static unsigned ctx_count = 0;
+static int ctx_current = -1;
+static unsigned curPFD = 0;
+
+WGLAPI BOOL GLAPIENTRY DrvCopyContext(HGLRC hglrcSrc,HGLRC hglrcDst,UINT mask)
+{
+ (void) hglrcSrc; (void) hglrcDst; (void) mask;
+ return(FALSE);
+}
+
+WGLAPI HGLRC GLAPIENTRY DrvCreateContext(HDC hdc)
+{
+ HWND hWnd;
+ int i = 0;
+
+ if(!(hWnd = WindowFromDC(hdc)))
+ {
+ SetLastError(0);
+ return(NULL);
+ }
+ if (!ctx_count)
+ {
+ for(i=0;i<MESAWGL_CTX_MAX_COUNT;i++)
+ {
+ wgl_ctx[i].ctx = NULL;
+ wgl_ctx[i].hdc = NULL;
+ }
+ }
+ for( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )
+ {
+ if ( wgl_ctx[i].ctx == NULL )
+ {
+ wgl_ctx[i].ctx = WMesaCreateContext( hWnd, NULL, GL_TRUE,
+ pix[curPFD-1].doubleBuffered,
+ pix[curPFD-1].pfd.cAlphaBits ? GL_TRUE : GL_FALSE);
+ if (wgl_ctx[i].ctx == NULL)
+ break;
+ wgl_ctx[i].hdc = hdc;
+ ctx_count++;
+ return ((HGLRC)wgl_ctx[i].ctx);
+ }
+ }
+ SetLastError(0);
+ return(NULL);
+}
+
+WGLAPI BOOL GLAPIENTRY DrvDeleteContext(HGLRC hglrc)
+{
+ int i;
+ for ( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )
+ {
+ if ( wgl_ctx[i].ctx == (PWMC) hglrc )
+ {
+ WMesaMakeCurrent((PWMC) hglrc);
+ WMesaDestroyContext();
+ wgl_ctx[i].ctx = NULL;
+ wgl_ctx[i].hdc = NULL;
+ ctx_count--;
+ return(TRUE);
+ }
+ }
+ SetLastError(0);
+ return(FALSE);
+}
+
+WGLAPI HGLRC GLAPIENTRY DrvCreateLayerContext(HDC hdc,int iLayerPlane)
+{
+ if (iLayerPlane == 0)
+ return DrvCreateContext(hdc);
+ SetLastError(0);
+ return(NULL);
+}
+
+WGLAPI PICDTABLE GLAPIENTRY DrvSetContext(HDC hdc,HGLRC hglrc,void *callback)
+{
+ int i;
+ (void) callback;
+
+ /* new code suggested by Andy Sy */
+ if (!hdc || !hglrc) {
+ WMesaMakeCurrent(NULL);
+ ctx_current = -1;
+ return NULL;
+ }
+
+ for ( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )
+ {
+ if ( wgl_ctx[i].ctx == (PWMC) hglrc )
+ {
+ wgl_ctx[i].hdc = hdc;
+ WMesaMakeCurrent( (PWMC) hglrc );
+ ctx_current = i;
+ return &icdTable;
+ }
+ }
+ return NULL;
+}
+
+WGLAPI void GLAPIENTRY DrvReleaseContext(HGLRC hglrc)
+{
+ (void) hglrc;
+ WMesaMakeCurrent(NULL);
+ ctx_current = -1;
+}
+
+WGLAPI BOOL GLAPIENTRY DrvShareLists(HGLRC hglrc1,HGLRC hglrc2)
+{
+ (void) hglrc1; (void) hglrc2;
+ return(TRUE);
+}
+
+WGLAPI BOOL GLAPIENTRY DrvDescribeLayerPlane(HDC hdc,int iPixelFormat,
+ int iLayerPlane,UINT nBytes,
+ LPLAYERPLANEDESCRIPTOR plpd)
+{
+ (void) hdc; (void) iPixelFormat; (void) iLayerPlane; (void) nBytes; (void) plpd;
+ SetLastError(0);
+ return(FALSE);
+}
+
+WGLAPI int GLAPIENTRY DrvSetLayerPaletteEntries(HDC hdc,int iLayerPlane,
+ int iStart,int cEntries,
+ CONST COLORREF *pcr)
+{
+ (void) hdc; (void) iLayerPlane; (void) iStart; (void) cEntries; (void) pcr;
+ SetLastError(0);
+ return(0);
+}
+
+WGLAPI int GLAPIENTRY DrvGetLayerPaletteEntries(HDC hdc,int iLayerPlane,
+ int iStart,int cEntries,
+ COLORREF *pcr)
+{
+ (void) hdc; (void) iLayerPlane; (void) iStart; (void) cEntries; (void) pcr;
+ SetLastError(0);
+ return(0);
+}
+
+WGLAPI BOOL GLAPIENTRY DrvRealizeLayerPalette(HDC hdc,int iLayerPlane,BOOL bRealize)
+{
+ (void) hdc; (void) iLayerPlane; (void) bRealize;
+ SetLastError(0);
+ return(FALSE);
+}
+
+WGLAPI BOOL GLAPIENTRY DrvSwapLayerBuffers(HDC hdc,UINT fuPlanes)
+{
+ (void) fuPlanes;
+ if( !hdc )
+ {
+ WMesaSwapBuffers();
+ return(TRUE);
+ }
+ SetLastError(0);
+ return(FALSE);
+}
+
+WGLAPI int GLAPIENTRY DrvDescribePixelFormat(HDC hdc,int iPixelFormat,UINT nBytes,
+ LPPIXELFORMATDESCRIPTOR ppfd)
+{
+ int qt_valid_pix;
+ (void) hdc;
+
+ qt_valid_pix = qt_pix;
+ if(ppfd == NULL)
+ return(qt_valid_pix);
+ if(iPixelFormat < 1 || iPixelFormat > qt_valid_pix || nBytes != sizeof(PIXELFORMATDESCRIPTOR))
+ {
+ SetLastError(0);
+ return(0);
+ }
+ *ppfd = pix[iPixelFormat - 1].pfd;
+ return(qt_valid_pix);
+}
+
+/*
+* GetProcAddress - return the address of an appropriate extension
+*/
+WGLAPI PROC GLAPIENTRY DrvGetProcAddress(LPCSTR lpszProc)
+{
+ PROC p = (PROC) (int) _glapi_get_proc_address((const char *) lpszProc);
+ if (p)
+ return p;
+
+ SetLastError(0);
+ return(NULL);
+}
+
+WGLAPI BOOL GLAPIENTRY DrvSetPixelFormat(HDC hdc,int iPixelFormat)
+{
+ int qt_valid_pix;
+ (void) hdc;
+
+ qt_valid_pix = qt_pix;
+ if(iPixelFormat < 1 || iPixelFormat > qt_valid_pix)
+ {
+ SetLastError(0);
+ return(FALSE);
+ }
+ curPFD = iPixelFormat;
+ return(TRUE);
+}
+
+WGLAPI BOOL GLAPIENTRY DrvSwapBuffers(HDC hdc)
+{
+ (void) hdc;
+ if (ctx_current < 0)
+ return FALSE;
+
+ if(wgl_ctx[ctx_current].ctx == NULL) {
+ SetLastError(0);
+ return(FALSE);
+ }
+ WMesaSwapBuffers();
+ return(TRUE);
+}
+
+WGLAPI BOOL GLAPIENTRY DrvValidateVersion(DWORD version)
+{
+ (void) version;
+ return TRUE;
+}
-DESCRIPTION 'Mesa (OpenGL driver) for Win32'\r
-VERSION 6.1\r
-\r
-EXPORTS\r
-;\r
-; ICD API\r
- DrvCopyContext\r
- DrvCreateContext\r
- DrvCreateLayerContext\r
- DrvDeleteContext\r
- DrvDescribeLayerPlane\r
- DrvDescribePixelFormat\r
- DrvGetLayerPaletteEntries\r
- DrvGetProcAddress\r
- DrvReleaseContext\r
- DrvRealizeLayerPalette\r
- DrvSetContext\r
- DrvSetLayerPaletteEntries\r
- DrvSetPixelFormat\r
- DrvShareLists\r
- DrvSwapBuffers\r
- DrvSwapLayerBuffers\r
- DrvValidateVersion\r
-\r
-;\r
-; Mesa internals - mostly for OSMESA\r
- _ac_CreateContext\r
- _ac_DestroyContext\r
- _ac_InvalidateState\r
- _glapi_get_context\r
- _glapi_get_proc_address\r
- _mesa_buffer_data\r
- _mesa_buffer_map\r
- _mesa_buffer_subdata\r
- _mesa_bzero\r
- _mesa_calloc\r
- _mesa_choose_tex_format\r
- _mesa_compressed_texture_size\r
- _mesa_create_framebuffer\r
- _mesa_create_visual\r
- _mesa_delete_buffer_object\r
- _mesa_delete_texture_object\r
- _mesa_destroy_framebuffer\r
- _mesa_destroy_visual\r
- _mesa_enable_1_3_extensions\r
- _mesa_enable_1_4_extensions\r
- _mesa_enable_1_5_extensions\r
- _mesa_enable_sw_extensions\r
- _mesa_error\r
- _mesa_free\r
- _mesa_free_context_data\r
- _mesa_get_current_context\r
- _mesa_init_default_imports\r
- _mesa_initialize_context\r
- _mesa_make_current\r
- _mesa_memcpy\r
- _mesa_memset\r
- _mesa_new_buffer_object\r
- _mesa_new_texture_object\r
- _mesa_problem\r
- _mesa_ResizeBuffersMESA\r
- _mesa_store_compressed_teximage1d\r
- _mesa_store_compressed_teximage2d\r
- _mesa_store_compressed_teximage3d\r
- _mesa_store_compressed_texsubimage1d\r
- _mesa_store_compressed_texsubimage2d\r
- _mesa_store_compressed_texsubimage3d\r
- _mesa_store_teximage1d\r
- _mesa_store_teximage2d\r
- _mesa_store_teximage3d\r
- _mesa_store_texsubimage1d\r
- _mesa_store_texsubimage2d\r
- _mesa_store_texsubimage3d\r
- _mesa_strcmp\r
- _mesa_test_proxy_teximage\r
- _mesa_Viewport\r
- _swrast_Accum\r
- _swrast_alloc_buffers\r
- _swrast_Bitmap\r
- _swrast_CopyPixels\r
- _swrast_DrawBuffer\r
- _swrast_DrawPixels\r
- _swrast_GetDeviceDriverReference\r
- _swrast_Clear\r
- _swrast_choose_line\r
- _swrast_choose_triangle\r
- _swrast_CopyColorSubTable\r
- _swrast_CopyColorTable\r
- _swrast_CopyConvolutionFilter1D\r
- _swrast_CopyConvolutionFilter2D\r
- _swrast_copy_teximage1d\r
- _swrast_copy_teximage2d\r
- _swrast_copy_texsubimage1d\r
- _swrast_copy_texsubimage2d\r
- _swrast_copy_texsubimage3d\r
- _swrast_CreateContext\r
- _swrast_DestroyContext\r
- _swrast_InvalidateState\r
- _swrast_ReadPixels\r
- _swrast_zbuffer_address\r
- _swsetup_Wakeup\r
- _swsetup_CreateContext\r
- _swsetup_DestroyContext\r
- _swsetup_InvalidateState\r
- _tnl_CreateContext\r
- _tnl_DestroyContext\r
- _tnl_InvalidateState\r
- _tnl_MakeCurrent\r
- _tnl_run_pipeline\r
+DESCRIPTION 'Mesa (OpenGL driver) for Win32'
+VERSION 6.1
+
+EXPORTS
+;
+; ICD API
+ DrvCopyContext
+ DrvCreateContext
+ DrvCreateLayerContext
+ DrvDeleteContext
+ DrvDescribeLayerPlane
+ DrvDescribePixelFormat
+ DrvGetLayerPaletteEntries
+ DrvGetProcAddress
+ DrvReleaseContext
+ DrvRealizeLayerPalette
+ DrvSetContext
+ DrvSetLayerPaletteEntries
+ DrvSetPixelFormat
+ DrvShareLists
+ DrvSwapBuffers
+ DrvSwapLayerBuffers
+ DrvValidateVersion
+
+;
+; Mesa internals - mostly for OSMESA
+ _ac_CreateContext
+ _ac_DestroyContext
+ _ac_InvalidateState
+ _glapi_get_context
+ _glapi_get_proc_address
+ _mesa_buffer_data
+ _mesa_buffer_map
+ _mesa_buffer_subdata
+ _mesa_bzero
+ _mesa_calloc
+ _mesa_choose_tex_format
+ _mesa_compressed_texture_size
+ _mesa_create_framebuffer
+ _mesa_create_visual
+ _mesa_delete_buffer_object
+ _mesa_delete_texture_object
+ _mesa_destroy_framebuffer
+ _mesa_destroy_visual
+ _mesa_enable_1_3_extensions
+ _mesa_enable_1_4_extensions
+ _mesa_enable_1_5_extensions
+ _mesa_enable_sw_extensions
+ _mesa_error
+ _mesa_free
+ _mesa_free_context_data
+ _mesa_get_current_context
+ _mesa_init_default_imports
+ _mesa_init_driver_functions
+ _mesa_initialize_context
+ _mesa_make_current
+ _mesa_memcpy
+ _mesa_memset
+ _mesa_new_buffer_object
+ _mesa_new_texture_object
+ _mesa_problem
+ _mesa_ResizeBuffersMESA
+ _mesa_store_compressed_teximage1d
+ _mesa_store_compressed_teximage2d
+ _mesa_store_compressed_teximage3d
+ _mesa_store_compressed_texsubimage1d
+ _mesa_store_compressed_texsubimage2d
+ _mesa_store_compressed_texsubimage3d
+ _mesa_store_teximage1d
+ _mesa_store_teximage2d
+ _mesa_store_teximage3d
+ _mesa_store_texsubimage1d
+ _mesa_store_texsubimage2d
+ _mesa_store_texsubimage3d
+ _mesa_strcmp
+ _mesa_test_proxy_teximage
+ _mesa_Viewport
+ _swrast_Accum
+ _swrast_alloc_buffers
+ _swrast_Bitmap
+ _swrast_CopyPixels
+ _swrast_DrawBuffer
+ _swrast_DrawPixels
+ _swrast_GetDeviceDriverReference
+ _swrast_Clear
+ _swrast_choose_line
+ _swrast_choose_triangle
+ _swrast_CopyColorSubTable
+ _swrast_CopyColorTable
+ _swrast_CopyConvolutionFilter1D
+ _swrast_CopyConvolutionFilter2D
+ _swrast_copy_teximage1d
+ _swrast_copy_teximage2d
+ _swrast_copy_texsubimage1d
+ _swrast_copy_texsubimage2d
+ _swrast_copy_texsubimage3d
+ _swrast_CreateContext
+ _swrast_DestroyContext
+ _swrast_InvalidateState
+ _swrast_ReadPixels
+ _swrast_zbuffer_address
+ _swsetup_Wakeup
+ _swsetup_CreateContext
+ _swsetup_DestroyContext
+ _swsetup_InvalidateState
+ _tnl_CreateContext
+ _tnl_DestroyContext
+ _tnl_InvalidateState
+ _tnl_MakeCurrent
+ _tnl_run_pipeline