[Mesa-dev] [PATCH 1/2] st/xlib: Honour request of 3.1 contexts through core profile where available.
Roland Scheidegger
sroland at vmware.com
Thu Apr 24 08:42:45 PDT 2014
Am 24.04.2014 16:24, schrieb jfonseca at vmware.com:
> From: José Fonseca <jfonseca at vmware.com>
>
> The GLX_ARB_create_context_profile spec says:
>
> "If version 3.1 is requested, the context returned may implement
> any of the following versions:
>
> * Version 3.1. The GL_ARB_compatibility extension may or may not
> be implemented, as determined by the implementation.
>
> * The core profile of version 3.2 or greater."
>
> Mesa does not support GL_ARB_compatibility, and there are no plans to
> ever support it, therefore the only chance to honour a 3.1 context is
> through core profile, i.e, the 2nd alternative from the spec.
>
> This change does that. And with it piglit tests that require 3.1
> contexts no longer skip.
>
> Assuming there is no objection with this change, src/glx/dri_common.c
> and src/gallium/state_trackers/wgl/stw_context.c should also be updated
> accordingly, given they have the same logic.
> ---
> src/gallium/state_trackers/glx/xlib/xm_api.c | 17 +++++++++++++++--
> 1 file changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c
> index bb2dd8e..7836c61 100644
> --- a/src/gallium/state_trackers/glx/xlib/xm_api.c
> +++ b/src/gallium/state_trackers/glx/xlib/xm_api.c
> @@ -899,10 +899,23 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list,
> *
> * "The default value for GLX_CONTEXT_PROFILE_MASK_ARB is
> * GLX_CONTEXT_CORE_PROFILE_BIT_ARB."
> + *
> + * The spec also says:
> + *
> + * "If version 3.1 is requested, the context returned may implement
> + * any of the following versions:
> + *
> + * * Version 3.1. The GL_ARB_compatibility extension may or may not
> + * be implemented, as determined by the implementation.
> + * * The core profile of version 3.2 or greater."
> + *
> + * and because Mesa doesn't support GL_ARB_compatibility, the only chance to
> + * honour a 3.1 context is through core profile.
> */
> attribs.profile = ST_PROFILE_DEFAULT;
> - if ((major > 3 || (major == 3 && minor >= 2))
> - && ((profileMask & GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB) == 0))
> + if (((major > 3 || (major == 3 && minor >= 2))
> + && ((profileMask & GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB) == 0)) ||
> + (major == 3 && minor == 1))
> attribs.profile = ST_PROFILE_OPENGL_CORE;
>
> c->st = stapi->create_context(stapi, xmdpy->smapi, &attribs,
>
Looks good to me. The spec there really seems to be unnecessarily
complex, I guess that's due to historic reasons...
Roland
More information about the mesa-dev
mailing list