diff --git a/reactos/dll/3rdparty/mesa32/mesa32.rbuild b/reactos/dll/3rdparty/mesa32/mesa32.rbuild index 38ca3fad3c5..4b0e48f12a3 100644 --- a/reactos/dll/3rdparty/mesa32/mesa32.rbuild +++ b/reactos/dll/3rdparty/mesa32/mesa32.rbuild @@ -236,6 +236,7 @@ wmesa.c + wgl.c icd.c diff --git a/reactos/dll/3rdparty/mesa32/src/drivers/windows/gdi/wgl.c b/reactos/dll/3rdparty/mesa32/src/drivers/windows/gdi/wgl.c index dad3dc11604..e3eb80dc3c8 100644 --- a/reactos/dll/3rdparty/mesa32/src/drivers/windows/gdi/wgl.c +++ b/reactos/dll/3rdparty/mesa32/src/drivers/windows/gdi/wgl.c @@ -703,3 +703,12 @@ WINGDIAPI const char * GLAPIENTRY wglGetExtensionsStringARB(HDC hdc) { return "WGL_ARB_extensions_string"; } + +GLAPI const char * GLAPIENTRY +wglGetExtensionsStringEXT (void) +{ + return + // "WGL_EXT_swap_control " + "WGL_EXT_extensions_string WGL_ARB_extensions_string" + /*WGL_ARB_pixel_format WGL_ARB_render_texture WGL_ARB_pbuffer*/; +} diff --git a/reactos/dll/3rdparty/mesa32/src/drivers/windows/icd/icd.c b/reactos/dll/3rdparty/mesa32/src/drivers/windows/icd/icd.c index 6ba8b1d83f9..82d13c4d977 100644 --- a/reactos/dll/3rdparty/mesa32/src/drivers/windows/icd/icd.c +++ b/reactos/dll/3rdparty/mesa32/src/drivers/windows/icd/icd.c @@ -49,6 +49,8 @@ extern "C" { #include "mtypes.h" #include "glapi.h" +GLAPI const char * GLAPIENTRY wglGetExtensionsStringEXT (void); + #define MAX_MESA_ATTRS 20 typedef struct wmesa_context *PWMC; @@ -306,12 +308,49 @@ WGLAPI int GLAPIENTRY DrvDescribePixelFormat(HDC hdc,int iPixelFormat,UINT nByte /* * GetProcAddress - return the address of an appropriate extension */ + +static struct { + const char *name; + PROC func; +} wgl_ext[] = { + {"wglGetExtensionsStringARB", (PROC)wglGetExtensionsStringARB}, + {"wglGetExtensionsStringEXT", (PROC)wglGetExtensionsStringEXT}, +// {"wglSwapIntervalEXT", (PROC)wglSwapIntervalEXT}, +// {"wglGetSwapIntervalEXT", (PROC)wglGetSwapIntervalEXT}, +// {"wglGetDeviceGammaRamp3DFX", (PROC)wglGetDeviceGammaRamp3DFX}, +// {"wglSetDeviceGammaRamp3DFX", (PROC)wglSetDeviceGammaRamp3DFX}, + /* WGL_ARB_pixel_format */ +// {"wglGetPixelFormatAttribivARB", (PROC)wglGetPixelFormatAttribivARB}, +// {"wglGetPixelFormatAttribfvARB", (PROC)wglGetPixelFormatAttribfvARB}, +// {"wglChoosePixelFormatARB", (PROC)wglChoosePixelFormatARB}, + /* WGL_ARB_render_texture */ +// {"wglBindTexImageARB", (PROC)wglBindTexImageARB}, +// {"wglReleaseTexImageARB", (PROC)wglReleaseTexImageARB}, +// {"wglSetPbufferAttribARB", (PROC)wglSetPbufferAttribARB}, +// /* WGL_ARB_pbuffer */ +// {"wglCreatePbufferARB", (PROC)wglCreatePbufferARB}, +// {"wglGetPbufferDCARB", (PROC)wglGetPbufferDCARB}, +// {"wglReleasePbufferDCARB", (PROC)wglReleasePbufferDCARB}, +// {"wglDestroyPbufferARB", (PROC)wglDestroyPbufferARB}, +// {"wglQueryPbufferARB", (PROC)wglQueryPbufferARB}, + {NULL, NULL} +}; + WGLAPI PROC GLAPIENTRY DrvGetProcAddress(LPCSTR lpszProc) { + int i; PROC p = (PROC) (int) _glapi_get_proc_address((const char *) lpszProc); if (p) return p; + for (i = 0; wgl_ext[i].name; i++) + { + if (!strcmp(lpszProc, wgl_ext[i].name)) + { + return wgl_ext[i].func; + } + } + SetLastError(0); return(NULL); }