ICD update from Gregor Anich
authorBrian Paul <brian.paul@tungstengraphics.com>
Wed, 25 Aug 2004 22:57:20 +0000 (22:57 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 25 Aug 2004 22:57:20 +0000 (22:57 +0000)
src/mesa/drivers/windows/icd/icd.c
src/mesa/drivers/windows/icd/mesa.def

index dfb8025..969f530 100644 (file)
-/*\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;
+}
index bbb8245..263b9d4 100644 (file)
-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