From 64ec50d52fa691cc1712df1d7eebea90552b7c2e Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Wed, 12 Sep 2018 10:52:06 +1000 Subject: [PATCH] mesa/st: add force_compat_profile option to driconfig MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Marek Olšák --- src/gallium/auxiliary/pipe-loader/driinfo_gallium.h | 1 + src/gallium/state_trackers/dri/dri_context.c | 10 ++++++++-- src/util/xmlpool/t_options.h | 5 +++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h b/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h index 5f4305d91d7..9db0dc01117 100644 --- a/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h +++ b/src/gallium/auxiliary/pipe-loader/driinfo_gallium.h @@ -30,6 +30,7 @@ DRI_CONF_SECTION_DEBUG DRI_CONF_FORCE_GLSL_ABS_SQRT("false") DRI_CONF_GLSL_CORRECT_DERIVATIVES_AFTER_DISCARD("false") DRI_CONF_ALLOW_GLSL_LAYOUT_QUALIFIER_ON_FUNCTION_PARAMETERS("false") + DRI_CONF_FORCE_COMPAT_PROFILE("false") DRI_CONF_SECTION_END DRI_CONF_SECTION_MISCELLANEOUS diff --git a/src/gallium/state_trackers/dri/dri_context.c b/src/gallium/state_trackers/dri/dri_context.c index fb307337a90..af9e3325f98 100644 --- a/src/gallium/state_trackers/dri/dri_context.c +++ b/src/gallium/state_trackers/dri/dri_context.c @@ -62,6 +62,7 @@ dri_create_context(gl_api api, const struct gl_config * visual, __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR; const __DRIbackgroundCallableExtension *backgroundCallable = screen->sPriv->dri2.backgroundCallable; + const struct driOptionCache *optionCache = &screen->dev->option_cache; if (screen->has_reset_status_query) { allowed_flags |= __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS; @@ -88,8 +89,13 @@ dri_create_context(gl_api api, const struct gl_config * visual, break; case API_OPENGL_COMPAT: case API_OPENGL_CORE: - attribs.profile = api == API_OPENGL_COMPAT ? ST_PROFILE_DEFAULT - : ST_PROFILE_OPENGL_CORE; + if (driQueryOptionb(optionCache, "force_compat_profile")) { + attribs.profile = ST_PROFILE_DEFAULT; + } else { + attribs.profile = api == API_OPENGL_COMPAT ? ST_PROFILE_DEFAULT + : ST_PROFILE_OPENGL_CORE; + } + attribs.major = ctx_config->major_version; attribs.minor = ctx_config->minor_version; diff --git a/src/util/xmlpool/t_options.h b/src/util/xmlpool/t_options.h index b6f7eed80b1..446674b46ab 100644 --- a/src/util/xmlpool/t_options.h +++ b/src/util/xmlpool/t_options.h @@ -140,6 +140,11 @@ DRI_CONF_OPT_BEGIN_B(allow_glsl_layout_qualifier_on_function_parameters, def) \ DRI_CONF_DESC(en,gettext("Allow layout qualifiers on function parameters.")) \ DRI_CONF_OPT_END +#define DRI_CONF_FORCE_COMPAT_PROFILE(def) \ +DRI_CONF_OPT_BEGIN_B(force_compat_profile, def) \ + DRI_CONF_DESC(en,gettext("Force an OpenGL compatibility context")) \ +DRI_CONF_OPT_END + /** * \brief Image quality-related options */ -- 2.30.2