diff options
| -rw-r--r-- | src/mesa/drivers/windows/icd/icd.c | 679 | ||||
| -rw-r--r-- | src/mesa/drivers/windows/icd/mesa.def | 219 | 
2 files changed, 457 insertions, 441 deletions
diff --git a/src/mesa/drivers/windows/icd/icd.c b/src/mesa/drivers/windows/icd/icd.c index dfb80250fa..969f530be3 100644 --- a/src/mesa/drivers/windows/icd/icd.c +++ b/src/mesa/drivers/windows/icd/icd.c @@ -1,332 +1,347 @@ -/*
 - * 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 <blight@blight.eu.org>
 - *
 - * ICD (Installable Client Driver) interface.
 - * Based on the windows GDI/WGL driver.
 - */
 -
 -#ifdef WIN32
 -
 -#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;
 -
 -static ICDTABLE icdTable = { 336, {
 -#define ICD_ENTRY(func) (PROC)mgl##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)
 -{
 -    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;
 -
 -    /* 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)
 -{
 -    WMesaMakeCurrent(NULL);
 -    ctx_current = -1;
 -}
 -
 -WGLAPI BOOL GLAPIENTRY DrvShareLists(HGLRC hglrc1,HGLRC hglrc2)
 -{
 -    return(TRUE);
 -}
 -
 -WGLAPI BOOL GLAPIENTRY DrvDescribeLayerPlane(HDC hdc,int iPixelFormat,
 -                                    int iLayerPlane,UINT nBytes,
 -                                    LPLAYERPLANEDESCRIPTOR plpd)
 -{
 -    SetLastError(0);
 -    return(FALSE);
 -}
 -
 -WGLAPI int GLAPIENTRY DrvSetLayerPaletteEntries(HDC hdc,int iLayerPlane,
 -                                       int iStart,int cEntries,
 -                                       CONST COLORREF *pcr)
 -{
 -    SetLastError(0);
 -    return(0);
 -}
 -
 -WGLAPI int GLAPIENTRY DrvGetLayerPaletteEntries(HDC hdc,int iLayerPlane,
 -                                       int iStart,int cEntries,
 -                                       COLORREF *pcr)
 -{
 -    SetLastError(0);
 -    return(0);
 -}
 -
 -WGLAPI BOOL GLAPIENTRY DrvRealizeLayerPalette(HDC hdc,int iLayerPlane,BOOL bRealize)
 -{
 -    SetLastError(0);
 -    return(FALSE);
 -}
 -
 -WGLAPI BOOL GLAPIENTRY DrvSwapLayerBuffers(HDC hdc,UINT 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;
 -
 -    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) _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;
 -
 -    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)
 -{
 -   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)
 -{
 -    return TRUE;
 -}
 -
 -#endif /* WIN32 */
 +/* + * 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; +} diff --git a/src/mesa/drivers/windows/icd/mesa.def b/src/mesa/drivers/windows/icd/mesa.def index bbb8245be4..263b9d4840 100644 --- a/src/mesa/drivers/windows/icd/mesa.def +++ b/src/mesa/drivers/windows/icd/mesa.def @@ -1,109 +1,110 @@ -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_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
 +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  | 
