diff options
author | Ian Romanick <[email protected]> | 2011-12-01 14:24:55 -0800 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2011-12-23 08:49:47 -0800 |
commit | 358ecff1ea0fa8432fd46bd3deeb8d2d694b5550 (patch) | |
tree | d8e285471e173a607ce1da802a5dbe64a7e1978c /src/gallium/state_trackers/wgl | |
parent | ed4a65c3cfdf88afba48860be34ce26f7c371869 (diff) |
st-api: Clean-up OpenGL profile handling
There seems to have been two different ways to communicate the
profile. There were flags and there were profiles. I've opted to
remove the profile flags and use ST_PROFILE_DEFAULT (compatibility
profile) and ST_PROFILE_OPENGL_CORE (core profile) consistently
instead.
Also change the values of the ST_CONTEXT_FLAG_DEBUG and
ST_CONTEXT_FLAG_FORWARD_COMPATIBLE flags to match the WGL and GLX
values.
Signed-off-by: Ian Romanick <[email protected]>
Reviewed-by: Brian Paul <[email protected]>
Reviewed-by: Chia-I Wu <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/wgl')
-rw-r--r-- | src/gallium/state_trackers/wgl/stw_context.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/gallium/state_trackers/wgl/stw_context.c b/src/gallium/state_trackers/wgl/stw_context.c index 6cc8a83150c..2c4fb0ef084 100644 --- a/src/gallium/state_trackers/wgl/stw_context.c +++ b/src/gallium/state_trackers/wgl/stw_context.c @@ -169,7 +169,6 @@ stw_create_context_attribs( ctx->iPixelFormat = iPixelFormat; memset(&attribs, 0, sizeof(attribs)); - attribs.profile = ST_PROFILE_DEFAULT; attribs.visual = pfi->stvis; attribs.major = majorVersion; attribs.minor = minorVersion; @@ -177,10 +176,23 @@ stw_create_context_attribs( 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; + + /* There are no profiles before OpenGL 3.2. The + * WGL_ARB_create_context_profile spec says: + * + * "If the requested OpenGL version is less than 3.2, + * WGL_CONTEXT_PROFILE_MASK_ARB is ignored and the functionality of the + * context is determined solely by the requested version." + * + * The spec also says: + * + * "The default value for WGL_CONTEXT_PROFILE_MASK_ARB is + * WGL_CONTEXT_CORE_PROFILE_BIT_ARB." + */ + attribs.profile = ST_PROFILE_DEFAULT; + if ((major > 3 || (major == 3 && minor >= 2)) + && ((profileMask & WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB) == 0)) + attribs.profile = ST_PROFILE_OPENGL_CORE; ctx->st = stw_dev->stapi->create_context(stw_dev->stapi, stw_dev->smapi, &attribs, shareCtx ? shareCtx->st : NULL); |