[Mesa-dev] [PATCH 11/12] gallium: pass st_config_options to query_versions

Marek Olšák maraeo at gmail.com
Sun Aug 3 08:18:34 PDT 2014


From: Marek Olšák <marek.olsak at amd.com>

So move it from dri_context to dri_screen.
This will be needed for version computations.
---
 src/gallium/include/state_tracker/st_api.h   |  1 +
 src/gallium/state_trackers/dri/dri_context.c | 22 +---------------------
 src/gallium/state_trackers/dri/dri_screen.c  | 26 ++++++++++++++++++++++++--
 src/gallium/state_trackers/dri/dri_screen.h  |  2 ++
 src/gallium/state_trackers/vega/vg_manager.c |  1 +
 src/mesa/state_tracker/st_manager.c          |  1 +
 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 4e56333..86fdc69 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 827f847..fe3240a 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 697ebee..fdcedcb 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 07c9898..e4a1a39 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 2894428..7960b06 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 dd9597b..0985422 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,
-- 
1.9.1



More information about the mesa-dev mailing list