Here is the modified patch. I just checked if it works but doesn't have a good test case for it. But I will write one for sure!
--- src/gallium/state_trackers/wgl/SConscript | 1 + src/gallium/state_trackers/wgl/stw_context.c | 47 +++++++- src/gallium/state_trackers/wgl/stw_context.h | 3 + src/gallium/state_trackers/wgl/stw_ext_context.c | 119 ++++++++++++++++++++ .../state_trackers/wgl/stw_getprocaddress.c | 3 + 5 files changed, 166 insertions(+), 7 deletions(-) create mode 100644 src/gallium/state_trackers/wgl/stw_ext_context.c diff --git a/src/gallium/state_trackers/wgl/SConscript b/src/gallium/state_trackers/wgl/SConscript index 7cb953b..1014b45 100644 --- a/src/gallium/state_trackers/wgl/SConscript +++ b/src/gallium/state_trackers/wgl/SConscript @@ -22,6 +22,7 @@ if not env['gles']: sources = [ 'stw_context.c', 'stw_device.c', + 'stw_ext_context.c', 'stw_ext_extensionsstring.c', 'stw_ext_gallium.c', 'stw_ext_pbuffer.c', diff --git a/src/gallium/state_trackers/wgl/stw_context.c b/src/gallium/state_trackers/wgl/stw_context.c index c2839fe..6cc8a83 100644 --- a/src/gallium/state_trackers/wgl/stw_context.c +++ b/src/gallium/state_trackers/wgl/stw_context.c @@ -27,6 +27,11 @@ #include <windows.h> +#define WGL_WGLEXT_PROTOTYPES + +#include <GL/gl.h> +#include <GL/wglext.h> + #include "pipe/p_compiler.h" #include "pipe/p_context.h" #include "pipe/p_state.h" @@ -121,23 +126,41 @@ DrvCreateLayerContext( HDC hdc, INT iLayerPlane ) { + return stw_create_context_attribs(hdc, iLayerPlane, 0, 1, 0, 0, WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB); +} + +DHGLRC +stw_create_context_attribs( + HDC hdc, + INT iLayerPlane, + DHGLRC hShareContext, + int majorVersion, int minorVersion, + int contextFlags, int profileMask) +{ int iPixelFormat; const struct stw_pixelformat_info *pfi; struct st_context_attribs attribs; struct stw_context *ctx = NULL; - - if(!stw_dev) + struct stw_context *shareCtx = NULL; + + if (!stw_dev) return 0; - + if (iLayerPlane != 0) return 0; iPixelFormat = GetPixelFormat(hdc); if(!iPixelFormat) return 0; - + pfi = stw_pixelformat_get_info( iPixelFormat - 1 ); - + + if (hShareContext != 0) { + pipe_mutex_lock( stw_dev->ctx_mutex ); + shareCtx = stw_lookup_context_locked( hShareContext ); + pipe_mutex_unlock( stw_dev->ctx_mutex ); + } + ctx = CALLOC_STRUCT( stw_context ); if (ctx == NULL) goto no_ctx; @@ -148,10 +171,20 @@ DrvCreateLayerContext( memset(&attribs, 0, sizeof(attribs)); attribs.profile = ST_PROFILE_DEFAULT; attribs.visual = pfi->stvis; + attribs.major = majorVersion; + attribs.minor = minorVersion; + if (contextFlags & WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB) + attribs.flags |= ST_CONTEXT_FLAG_FORWARD_COMPATIBLE; + if (contextFlags & WGL_CONTEXT_DEBUG_BIT_ARB) + attribs.flags |= ST_CONTEXT_FLAG_DEBUG; + if (profileMask & WGL_CONTEXT_CORE_PROFILE_BIT_ARB) + attribs.flags |= ST_CONTEXT_FLAG_CORE_PROFILE; + if (profileMask & WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB) + attribs.flags |= ST_CONTEXT_FLAG_COMPATIBLE_PROFILE; ctx->st = stw_dev->stapi->create_context(stw_dev->stapi, - stw_dev->smapi, &attribs, NULL); - if (ctx->st == NULL) + stw_dev->smapi, &attribs, shareCtx ? shareCtx->st : NULL); + if (ctx->st == NULL) goto no_st_ctx; ctx->st->st_manager_private = (void *) ctx; diff --git a/src/gallium/state_trackers/wgl/stw_context.h b/src/gallium/state_trackers/wgl/stw_context.h index 0bbed84..07a5c7d 100644 --- a/src/gallium/state_trackers/wgl/stw_context.h +++ b/src/gallium/state_trackers/wgl/stw_context.h @@ -43,6 +43,9 @@ struct stw_context struct stw_framebuffer *current_framebuffer; }; +DHGLRC stw_create_context_attribs( HDC hdc, INT iLayerPlane, DHGLRC hShareContext, + int majorVersion, int minorVersion, int contextFlags, int profileMask ); + DHGLRC stw_get_current_context( void ); HDC stw_get_current_dc( void ); diff --git a/src/gallium/state_trackers/wgl/stw_ext_context.c b/src/gallium/state_trackers/wgl/stw_ext_context.c new file mode 100644 index 0000000..a3470ac --- /dev/null +++ b/src/gallium/state_trackers/wgl/stw_ext_context.c @@ -0,0 +1,119 @@ +/* + * Mesa 3-D graphics library + * Version: 7.11 + * + * Copyright (C) 2011 Morgan Armand <morgan.de...@gmail.com> + * + * 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. + */ + +#include <windows.h> + +#define WGL_WGLEXT_PROTOTYPES + +#include <GL/gl.h> +#include <GL/wglext.h> + +#include "stw_icd.h" +#include "stw_context.h" + +HGLRC WINAPI +wglCreateContextAttribsARB(HDC hDC, HGLRC hShareContext, const int *attribList) +{ + int majorVersion = 1, minorVersion = 0, layerPlane = 0; + int contextFlags = 0x0; + int profileMask = WGL_CONTEXT_CORE_PROFILE_BIT_ARB; + int i; + BOOL done = FALSE; + + /* parse attrib_list */ + if (attribList) { + for (i = 0; !done && attribList[i]; i++) { + switch (attribList[i]) { + case WGL_CONTEXT_MAJOR_VERSION_ARB: + majorVersion = attribList[++i]; + break; + case WGL_CONTEXT_MINOR_VERSION_ARB: + minorVersion = attribList[++i]; + break; + case WGL_CONTEXT_LAYER_PLANE_ARB: + layerPlane = attribList[++i]; + break; + case WGL_CONTEXT_FLAGS_ARB: + contextFlags = attribList[++i]; + break; + case WGL_CONTEXT_PROFILE_MASK_ARB: + profileMask = attribList[++i]; + break; + case 0: + /* end of list */ + done = TRUE; + break; + default: + /* bad attribute */ + SetLastError(ERROR_INVALID_PARAMETER); + return NULL; + } + } + } + + /* check version (generate ERROR_INVALID_VERSION_ARB if bad) */ + switch (majorVersion) { + case 1: + if (minorVersion < 0 || minorVersion > 5) { + SetLastError(ERROR_INVALID_VERSION_ARB); + return NULL; + } + break; + case 2: + if (minorVersion < 0 || minorVersion > 1) { + SetLastError(ERROR_INVALID_VERSION_ARB); + return NULL; + } + break; + case 3: + if (minorVersion < 0 || minorVersion > 3) { + SetLastError(ERROR_INVALID_VERSION_ARB); + return NULL; + } + break; + case 4: + if (minorVersion < 0 || minorVersion > 2) { + SetLastError(ERROR_INVALID_VERSION_ARB); + return NULL; + } + break; + default: + return NULL; + } + + if ((contextFlags & WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB) && majorVersion < 3) { + SetLastError(ERROR_INVALID_VERSION_ARB); + return NULL; + } + + /* check profileMask */ + if (profileMask != WGL_CONTEXT_CORE_PROFILE_BIT_ARB && + profileMask != WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB) { + SetLastError(ERROR_INVALID_PROFILE_ARB); + return NULL; + } + + return (HGLRC) stw_create_context_attribs( hDC, layerPlane, (DHGLRC)(UINT_PTR)hShareContext, + majorVersion, minorVersion, contextFlags, profileMask ); +} diff --git a/src/gallium/state_trackers/wgl/stw_getprocaddress.c b/src/gallium/state_trackers/wgl/stw_getprocaddress.c index b0aef94..a1df44c 100644 --- a/src/gallium/state_trackers/wgl/stw_getprocaddress.c +++ b/src/gallium/state_trackers/wgl/stw_getprocaddress.c @@ -73,6 +73,9 @@ static const struct stw_extension_entry stw_extension_entries[] = { STW_EXTENSION_ENTRY( wglGetGalliumScreenMESA ), STW_EXTENSION_ENTRY( wglCreateGalliumContextMESA ), + /* WGL_ARB_create_context */ + STW_EXTENSION_ENTRY( wglCreateContextAttribsARB ), + { NULL, NULL } }; -- 1.7.7.msysgit.1 On Mon, Oct 24, 2011 at 5:37 PM, Jose Fonseca <jfons...@vmware.com> wrote: > Looks good to me. Just a few minor requests: > - The APIENTRY keyword in stw_create_context_attribs() is unnecessary given > it is an internal API. > - Please move the stw_create_context_attribs() immediately after > DrvCreateLayerContext so that the code doesn't move around so much, and the > diff is cleaner. > > BTW, do you have test case for this? It would be really good have one in > piglit and/or mesa demos. > > Jose > > ----- Original Message ----- >> Sorry about the missing file. Here is the patch taking into account >> your remarks. >> >> --- >> src/gallium/state_trackers/wgl/SConscript | 1 + >> src/gallium/state_trackers/wgl/stw_context.c | 130 >> ++++++++++++-------- >> src/gallium/state_trackers/wgl/stw_context.h | 3 + >> src/gallium/state_trackers/wgl/stw_ext_context.c | 119 >> ++++++++++++++++++ >> .../state_trackers/wgl/stw_getprocaddress.c | 3 + >> 5 files changed, 207 insertions(+), 49 deletions(-) >> create mode 100644 src/gallium/state_trackers/wgl/stw_ext_context.c >> >> diff --git a/src/gallium/state_trackers/wgl/SConscript >> b/src/gallium/state_trackers/wgl/SConscript >> index 7cb953b..1014b45 100644 >> --- a/src/gallium/state_trackers/wgl/SConscript >> +++ b/src/gallium/state_trackers/wgl/SConscript >> @@ -22,6 +22,7 @@ if not env['gles']: >> sources = [ >> 'stw_context.c', >> 'stw_device.c', >> + 'stw_ext_context.c', >> 'stw_ext_extensionsstring.c', >> 'stw_ext_gallium.c', >> 'stw_ext_pbuffer.c', >> diff --git a/src/gallium/state_trackers/wgl/stw_context.c >> b/src/gallium/state_trackers/wgl/stw_context.c >> index c2839fe..152984a 100644 >> --- a/src/gallium/state_trackers/wgl/stw_context.c >> +++ b/src/gallium/state_trackers/wgl/stw_context.c >> @@ -27,6 +27,11 @@ >> >> #include <windows.h> >> >> +#define WGL_WGLEXT_PROTOTYPES >> + >> +#include <GL/gl.h> >> +#include <GL/wglext.h> >> + >> #include "pipe/p_compiler.h" >> #include "pipe/p_context.h" >> #include "pipe/p_state.h" >> @@ -121,55 +126,7 @@ DrvCreateLayerContext( >> HDC hdc, >> INT iLayerPlane ) >> { >> - int iPixelFormat; >> - const struct stw_pixelformat_info *pfi; >> - struct st_context_attribs attribs; >> - struct stw_context *ctx = NULL; >> - >> - if(!stw_dev) >> - return 0; >> - >> - if (iLayerPlane != 0) >> - return 0; >> - >> - iPixelFormat = GetPixelFormat(hdc); >> - if(!iPixelFormat) >> - return 0; >> - >> - pfi = stw_pixelformat_get_info( iPixelFormat - 1 ); >> - >> - ctx = CALLOC_STRUCT( stw_context ); >> - if (ctx == NULL) >> - goto no_ctx; >> - >> - ctx->hdc = hdc; >> - ctx->iPixelFormat = iPixelFormat; >> - >> - memset(&attribs, 0, sizeof(attribs)); >> - attribs.profile = ST_PROFILE_DEFAULT; >> - attribs.visual = pfi->stvis; >> - >> - ctx->st = stw_dev->stapi->create_context(stw_dev->stapi, >> - stw_dev->smapi, &attribs, NULL); >> - if (ctx->st == NULL) >> - goto no_st_ctx; >> - >> - ctx->st->st_manager_private = (void *) ctx; >> - >> - pipe_mutex_lock( stw_dev->ctx_mutex ); >> - ctx->dhglrc = handle_table_add(stw_dev->ctx_table, ctx); >> - pipe_mutex_unlock( stw_dev->ctx_mutex ); >> - if (!ctx->dhglrc) >> - goto no_hglrc; >> - >> - return ctx->dhglrc; >> - >> -no_hglrc: >> - ctx->st->destroy(ctx->st); >> -no_st_ctx: >> - FREE(ctx); >> -no_ctx: >> - return 0; >> + return stw_create_context_attribs(hdc, iLayerPlane, 0, 1, 0, 0, >> WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB); >> } >> >> BOOL APIENTRY >> @@ -232,6 +189,81 @@ DrvReleaseContext( >> return TRUE; >> } >> >> +DHGLRC APIENTRY >> +stw_create_context_attribs( >> + HDC hdc, >> + INT iLayerPlane, >> + DHGLRC hShareContext, >> + int majorVersion, int minorVersion, >> + int contextFlags, int profileMask) >> +{ >> + int iPixelFormat; >> + const struct stw_pixelformat_info *pfi; >> + struct st_context_attribs attribs; >> + struct stw_context *ctx = NULL; >> + struct stw_context *shareCtx = NULL; >> + >> + if(!stw_dev) >> + return 0; >> + >> + if (iLayerPlane != 0) >> + return 0; >> + >> + iPixelFormat = GetPixelFormat(hdc); >> + if(!iPixelFormat) >> + return 0; >> + >> + pfi = stw_pixelformat_get_info( iPixelFormat - 1 ); >> + >> + if (hShareContext != 0) { >> + pipe_mutex_lock( stw_dev->ctx_mutex ); >> + shareCtx = stw_lookup_context_locked( hShareContext ); >> + pipe_mutex_unlock( stw_dev->ctx_mutex ); >> + } >> + >> + ctx = CALLOC_STRUCT( stw_context ); >> + if (ctx == NULL) >> + goto no_ctx; >> + >> + ctx->hdc = hdc; >> + ctx->iPixelFormat = iPixelFormat; >> + >> + memset(&attribs, 0, sizeof(attribs)); >> + attribs.profile = ST_PROFILE_DEFAULT; >> + attribs.visual = pfi->stvis; >> + attribs.major = majorVersion; >> + attribs.minor = minorVersion; >> + if (contextFlags & WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB) >> + attribs.flags |= ST_CONTEXT_FLAG_FORWARD_COMPATIBLE; >> + if (contextFlags & WGL_CONTEXT_DEBUG_BIT_ARB) >> + attribs.flags |= ST_CONTEXT_FLAG_DEBUG; >> + if (profileMask & WGL_CONTEXT_CORE_PROFILE_BIT_ARB) >> + attribs.flags |= ST_CONTEXT_FLAG_CORE_PROFILE; >> + if (profileMask & WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB) >> + attribs.flags |= ST_CONTEXT_FLAG_COMPATIBLE_PROFILE; >> + >> + ctx->st = stw_dev->stapi->create_context(stw_dev->stapi, >> + stw_dev->smapi, &attribs, shareCtx ? shareCtx->st : NULL); >> + if (ctx->st == NULL) >> + goto no_st_ctx; >> + >> + ctx->st->st_manager_private = (void *) ctx; >> + >> + pipe_mutex_lock( stw_dev->ctx_mutex ); >> + ctx->dhglrc = handle_table_add(stw_dev->ctx_table, ctx); >> + pipe_mutex_unlock( stw_dev->ctx_mutex ); >> + if (!ctx->dhglrc) >> + goto no_hglrc; >> + >> + return ctx->dhglrc; >> + >> +no_hglrc: >> + ctx->st->destroy(ctx->st); >> +no_st_ctx: >> + FREE(ctx); >> +no_ctx: >> + return 0; >> +} >> >> DHGLRC >> stw_get_current_context( void ) >> diff --git a/src/gallium/state_trackers/wgl/stw_context.h >> b/src/gallium/state_trackers/wgl/stw_context.h >> index 0bbed84..103768b 100644 >> --- a/src/gallium/state_trackers/wgl/stw_context.h >> +++ b/src/gallium/state_trackers/wgl/stw_context.h >> @@ -43,6 +43,9 @@ struct stw_context >> struct stw_framebuffer *current_framebuffer; >> }; >> >> +DHGLRC APIENTRY stw_create_context_attribs( HDC hdc, INT >> iLayerPlane, >> DHGLRC hShareContext, >> + int majorVersion, int >> minorVersion, int contextFlags, int profileMask ); >> + >> DHGLRC stw_get_current_context( void ); >> >> HDC stw_get_current_dc( void ); >> diff --git a/src/gallium/state_trackers/wgl/stw_ext_context.c >> b/src/gallium/state_trackers/wgl/stw_ext_context.c >> new file mode 100644 >> index 0000000..a3470ac >> --- /dev/null >> +++ b/src/gallium/state_trackers/wgl/stw_ext_context.c >> @@ -0,0 +1,119 @@ >> +/* >> + * Mesa 3-D graphics library >> + * Version: 7.11 >> + * >> + * Copyright (C) 2011 Morgan Armand <morgan.de...@gmail.com> >> + * >> + * 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. >> + */ >> + >> +#include <windows.h> >> + >> +#define WGL_WGLEXT_PROTOTYPES >> + >> +#include <GL/gl.h> >> +#include <GL/wglext.h> >> + >> +#include "stw_icd.h" >> +#include "stw_context.h" >> + >> +HGLRC WINAPI >> +wglCreateContextAttribsARB(HDC hDC, HGLRC hShareContext, const int >> *attribList) >> +{ >> + int majorVersion = 1, minorVersion = 0, layerPlane = 0; >> + int contextFlags = 0x0; >> + int profileMask = WGL_CONTEXT_CORE_PROFILE_BIT_ARB; >> + int i; >> + BOOL done = FALSE; >> + >> + /* parse attrib_list */ >> + if (attribList) { >> + for (i = 0; !done && attribList[i]; i++) { >> + switch (attribList[i]) { >> + case WGL_CONTEXT_MAJOR_VERSION_ARB: >> + majorVersion = attribList[++i]; >> + break; >> + case WGL_CONTEXT_MINOR_VERSION_ARB: >> + minorVersion = attribList[++i]; >> + break; >> + case WGL_CONTEXT_LAYER_PLANE_ARB: >> + layerPlane = attribList[++i]; >> + break; >> + case WGL_CONTEXT_FLAGS_ARB: >> + contextFlags = attribList[++i]; >> + break; >> + case WGL_CONTEXT_PROFILE_MASK_ARB: >> + profileMask = attribList[++i]; >> + break; >> + case 0: >> + /* end of list */ >> + done = TRUE; >> + break; >> + default: >> + /* bad attribute */ >> + SetLastError(ERROR_INVALID_PARAMETER); >> + return NULL; >> + } >> + } >> + } >> + >> + /* check version (generate ERROR_INVALID_VERSION_ARB if bad) */ >> + switch (majorVersion) { >> + case 1: >> + if (minorVersion < 0 || minorVersion > 5) { >> + SetLastError(ERROR_INVALID_VERSION_ARB); >> + return NULL; >> + } >> + break; >> + case 2: >> + if (minorVersion < 0 || minorVersion > 1) { >> + SetLastError(ERROR_INVALID_VERSION_ARB); >> + return NULL; >> + } >> + break; >> + case 3: >> + if (minorVersion < 0 || minorVersion > 3) { >> + SetLastError(ERROR_INVALID_VERSION_ARB); >> + return NULL; >> + } >> + break; >> + case 4: >> + if (minorVersion < 0 || minorVersion > 2) { >> + SetLastError(ERROR_INVALID_VERSION_ARB); >> + return NULL; >> + } >> + break; >> + default: >> + return NULL; >> + } >> + >> + if ((contextFlags & WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB) && >> majorVersion < 3) { >> + SetLastError(ERROR_INVALID_VERSION_ARB); >> + return NULL; >> + } >> + >> + /* check profileMask */ >> + if (profileMask != WGL_CONTEXT_CORE_PROFILE_BIT_ARB && >> + profileMask != WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB) { >> + SetLastError(ERROR_INVALID_PROFILE_ARB); >> + return NULL; >> + } >> + >> + return (HGLRC) stw_create_context_attribs( hDC, layerPlane, >> (DHGLRC)(UINT_PTR)hShareContext, >> + majorVersion, >> minorVersion, contextFlags, profileMask ); >> +} >> diff --git a/src/gallium/state_trackers/wgl/stw_getprocaddress.c >> b/src/gallium/state_trackers/wgl/stw_getprocaddress.c >> index b0aef94..a1df44c 100644 >> --- a/src/gallium/state_trackers/wgl/stw_getprocaddress.c >> +++ b/src/gallium/state_trackers/wgl/stw_getprocaddress.c >> @@ -73,6 +73,9 @@ static const struct stw_extension_entry >> stw_extension_entries[] = { >> STW_EXTENSION_ENTRY( wglGetGalliumScreenMESA ), >> STW_EXTENSION_ENTRY( wglCreateGalliumContextMESA ), >> >> + /* WGL_ARB_create_context */ >> + STW_EXTENSION_ENTRY( wglCreateContextAttribsARB ), >> + >> { NULL, NULL } >> }; >> >> -- >> 1.7.7.msysgit.1 >> >> On Wed, Oct 19, 2011 at 11:51 PM, Jose Fonseca <jfons...@vmware.com> >> wrote: >> > ----- Original Message ----- >> >> --- >> >> src/gallium/state_trackers/wgl/SConscript | 1 + >> >> src/gallium/state_trackers/wgl/stw_context.c | 39 >> >> ++++++++++++++++++-- >> >> .../state_trackers/wgl/stw_getprocaddress.c | 3 ++ >> >> src/gallium/state_trackers/wgl/stw_icd.h | 8 ++++ >> >> 4 files changed, 48 insertions(+), 3 deletions(-) >> >> >> >> diff --git a/src/gallium/state_trackers/wgl/SConscript >> >> b/src/gallium/state_trackers/wgl/SConscript >> >> index 7cb953b..1014b45 100644 >> >> --- a/src/gallium/state_trackers/wgl/SConscript >> >> +++ b/src/gallium/state_trackers/wgl/SConscript >> >> @@ -22,6 +22,7 @@ if not env['gles']: >> >> sources = [ >> >> 'stw_context.c', >> >> 'stw_device.c', >> >> + 'stw_ext_context.c', >> > >> > The file "stw_ext_context.c" was not included in the patch. Please >> > add it and resend. >> > >> >> 'stw_ext_extensionsstring.c', >> >> 'stw_ext_gallium.c', >> >> 'stw_ext_pbuffer.c', >> >> diff --git a/src/gallium/state_trackers/wgl/stw_context.c >> >> b/src/gallium/state_trackers/wgl/stw_context.c >> >> index c2839fe..875d713 100644 >> >> --- a/src/gallium/state_trackers/wgl/stw_context.c >> >> +++ b/src/gallium/state_trackers/wgl/stw_context.c >> >> @@ -27,6 +27,11 @@ >> >> >> >> #include <windows.h> >> >> >> >> +#define WGL_WGLEXT_PROTOTYPES >> >> + >> >> +#include <GL/gl.h> >> >> +#include <GL/wglext.h> >> >> + >> >> #include "pipe/p_compiler.h" >> >> #include "pipe/p_context.h" >> >> #include "pipe/p_state.h" >> >> @@ -121,11 +126,23 @@ DrvCreateLayerContext( >> >> HDC hdc, >> >> INT iLayerPlane ) >> >> { >> >> + return DrvCreateContextAttribs(hdc, iLayerPlane, 0, 1, 0, 0, >> >> WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB); >> >> +} >> >> + >> >> +DHGLRC APIENTRY >> >> +DrvCreateContextAttribs( >> >> + HDC hdc, >> >> + INT iLayerPlane, >> >> + DHGLRC hShareContext, >> >> + int majorVersion, int minorVersion, >> >> + int contextFlags, int profileMask) >> >> +{ >> > >> > The Drv* prefix is for entrypoints that are part of the ICD. But >> > don't think that a "DrvCreateContextAttribs" has been defined by >> > Microsoft as part of the ICD. >> > >> > If so, please use a different funtion name, e.g., >> > stw_create_context_attribs, and declare in it stw_context.h, >> > instead of stw_icd.h >> > >> > >> > Jose >> > >> > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev