summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/include/state_tracker/st_api.h1
-rw-r--r--src/gallium/state_trackers/dri/dri_context.c22
-rw-r--r--src/gallium/state_trackers/dri/dri_screen.c26
-rw-r--r--src/gallium/state_trackers/dri/dri_screen.h2
-rw-r--r--src/gallium/state_trackers/vega/vg_manager.c1
-rw-r--r--src/mesa/state_tracker/st_manager.c1
6 files changed, 30 insertions, 23 deletions
diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h
index 4e563330c4d..86fdc6988ab 100644
--- a/src/gallium/include/state_tracker/st_api.h
+++ b/src/gallium/include/state_tracker/st_api.h
@@ -490,6 +490,7 @@ struct st_api
* The format is (major*10+minor).
*/
void (*query_versions)(struct st_api *stapi, struct st_manager *sm,
+ struct st_config_options *options,
int *gl_core_version,
int *gl_compat_version,
int *gl_es1_version,
diff --git a/src/gallium/state_trackers/dri/dri_context.c b/src/gallium/state_trackers/dri/dri_context.c
index 827f847ea07..fe3240ae1fa 100644
--- a/src/gallium/state_trackers/dri/dri_context.c
+++ b/src/gallium/state_trackers/dri/dri_context.c
@@ -39,26 +39,6 @@
#include "pipe/p_context.h"
#include "state_tracker/st_context.h"
-static void
-dri_fill_st_options(struct st_config_options *options,
- const struct driOptionCache * optionCache)
-{
- options->disable_blend_func_extended =
- driQueryOptionb(optionCache, "disable_blend_func_extended");
- options->disable_glsl_line_continuations =
- driQueryOptionb(optionCache, "disable_glsl_line_continuations");
- options->disable_shader_bit_encoding =
- driQueryOptionb(optionCache, "disable_shader_bit_encoding");
- options->force_glsl_extensions_warn =
- driQueryOptionb(optionCache, "force_glsl_extensions_warn");
- options->force_glsl_version =
- driQueryOptioni(optionCache, "force_glsl_version");
- options->force_s3tc_enable =
- driQueryOptionb(optionCache, "force_s3tc_enable");
- options->allow_glsl_extension_directive_midshader =
- driQueryOptionb(optionCache, "allow_glsl_extension_directive_midshader");
-}
-
GLboolean
dri_create_context(gl_api api, const struct gl_config * visual,
__DRIcontext * cPriv,
@@ -127,7 +107,7 @@ dri_create_context(gl_api api, const struct gl_config * visual,
ctx->cPriv = cPriv;
ctx->sPriv = sPriv;
- dri_fill_st_options(&attribs.options, &screen->optionCache);
+ attribs.options = screen->options;
dri_fill_st_visual(&attribs.visual, screen, visual);
ctx->st = stapi->create_context(stapi, &screen->base, &attribs, &ctx_err,
st_share);
diff --git a/src/gallium/state_trackers/dri/dri_screen.c b/src/gallium/state_trackers/dri/dri_screen.c
index 697ebee0fb1..fdcedcba555 100644
--- a/src/gallium/state_trackers/dri/dri_screen.c
+++ b/src/gallium/state_trackers/dri/dri_screen.c
@@ -80,6 +80,26 @@ const __DRIconfigOptionsExtension gallium_config_options = {
#define false 0
+static void
+dri_fill_st_options(struct st_config_options *options,
+ const struct driOptionCache * optionCache)
+{
+ options->disable_blend_func_extended =
+ driQueryOptionb(optionCache, "disable_blend_func_extended");
+ options->disable_glsl_line_continuations =
+ driQueryOptionb(optionCache, "disable_glsl_line_continuations");
+ options->disable_shader_bit_encoding =
+ driQueryOptionb(optionCache, "disable_shader_bit_encoding");
+ options->force_glsl_extensions_warn =
+ driQueryOptionb(optionCache, "force_glsl_extensions_warn");
+ options->force_glsl_version =
+ driQueryOptioni(optionCache, "force_glsl_version");
+ options->force_s3tc_enable =
+ driQueryOptionb(optionCache, "force_s3tc_enable");
+ options->allow_glsl_extension_directive_midshader =
+ driQueryOptionb(optionCache, "allow_glsl_extension_directive_midshader");
+}
+
static const __DRIconfig **
dri_fill_in_modes(struct dri_screen *screen)
{
@@ -439,9 +459,10 @@ dri_init_screen_helper(struct dri_screen *screen,
screen->sPriv->myNum,
driver_name);
+ dri_fill_st_options(&screen->options, &screen->optionCache);
+
/* Handle force_s3tc_enable. */
- if (!util_format_s3tc_enabled &&
- driQueryOptionb(&screen->optionCache, "force_s3tc_enable")) {
+ if (!util_format_s3tc_enabled && screen->options.force_s3tc_enable) {
/* Ensure libtxc_dxtn has been loaded if available.
* Forcing S3TC on before calling this would prevent loading
* the library.
@@ -456,6 +477,7 @@ dri_init_screen_helper(struct dri_screen *screen,
dri_postprocessing_init(screen);
screen->st_api->query_versions(screen->st_api, &screen->base,
+ &screen->options,
&screen->sPriv->max_gl_core_version,
&screen->sPriv->max_gl_compat_version,
&screen->sPriv->max_gl_es1_version,
diff --git a/src/gallium/state_trackers/dri/dri_screen.h b/src/gallium/state_trackers/dri/dri_screen.h
index 07c989807f3..e4a1a39aa21 100644
--- a/src/gallium/state_trackers/dri/dri_screen.h
+++ b/src/gallium/state_trackers/dri/dri_screen.h
@@ -65,6 +65,8 @@ struct dri_screen
/** The screen's effective configuration options */
driOptionCache optionCache;
+ struct st_config_options options;
+
/* Which postprocessing filters are enabled. */
unsigned pp_enabled[PP_FILTERS];
diff --git a/src/gallium/state_trackers/vega/vg_manager.c b/src/gallium/state_trackers/vega/vg_manager.c
index 2894428a8bc..7960b0692c3 100644
--- a/src/gallium/state_trackers/vega/vg_manager.c
+++ b/src/gallium/state_trackers/vega/vg_manager.c
@@ -371,6 +371,7 @@ vg_api_destroy(struct st_api *stapi)
static void
vg_api_query_versions(struct st_api *stapi, struct st_manager *sm,
+ struct st_config_options *options,
int *gl_core_version,
int *gl_compat_version,
int *gl_es1_version,
diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
index dd9597be766..09854221a5c 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -912,6 +912,7 @@ st_manager_add_color_renderbuffer(struct st_context *st,
static void
st_api_query_versions(struct st_api *stapi, struct st_manager *sm,
+ struct st_config_options *options,
int *gl_core_version,
int *gl_compat_version,
int *gl_es1_version,