[Mesa-dev] [PATCH 09/15] st/dri: move enabling postprocessing to dri_screen

Marek Olšák maraeo at gmail.com
Fri Jul 19 08:18:19 PDT 2013


The driconf options are global.
---
 src/gallium/state_trackers/dri/common/dri_context.c | 15 +--------------
 src/gallium/state_trackers/dri/common/dri_context.h |  2 --
 src/gallium/state_trackers/dri/common/dri_screen.c  | 13 +++++++++++++
 src/gallium/state_trackers/dri/common/dri_screen.h  |  4 ++++
 4 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c
index ab80fc7..6603491 100644
--- a/src/gallium/state_trackers/dri/common/dri_context.c
+++ b/src/gallium/state_trackers/dri/common/dri_context.c
@@ -39,16 +39,6 @@
 #include "pipe/p_context.h"
 #include "state_tracker/st_context.h"
 
-static void
-dri_pp_query(struct dri_context *ctx)
-{
-   unsigned int i;
-
-   for (i = 0; i < PP_FILTERS; i++) {
-      ctx->pp_enabled[i] = driQueryOptioni(&ctx->optionCache, pp_filters[i].name);
-   }
-}
-
 static void dri_fill_st_options(struct st_config_options *options,
                                 const struct driOptionCache * optionCache)
 {
@@ -156,11 +146,8 @@ dri_create_context(gl_api api, const struct gl_config * visual,
    ctx->st->st_manager_private = (void *) ctx;
    ctx->stapi = stapi;
 
-   // Context successfully created. See if post-processing is requested.
-   dri_pp_query(ctx);
-
    if (ctx->st->cso_context) {
-      ctx->pp = pp_init(ctx->st->pipe, ctx->pp_enabled, ctx->st->cso_context);
+      ctx->pp = pp_init(ctx->st->pipe, screen->pp_enabled, ctx->st->cso_context);
       ctx->hud = hud_create(ctx->st->pipe, ctx->st->cso_context);
    }
 
diff --git a/src/gallium/state_trackers/dri/common/dri_context.h b/src/gallium/state_trackers/dri/common/dri_context.h
index 5af2861..2734ee5 100644
--- a/src/gallium/state_trackers/dri/common/dri_context.h
+++ b/src/gallium/state_trackers/dri/common/dri_context.h
@@ -34,7 +34,6 @@
 
 #include "dri_util.h"
 #include "pipe/p_compiler.h"
-#include "postprocess/filters.h"
 #include "hud/hud_context.h"
 
 struct pipe_context;
@@ -59,7 +58,6 @@ struct dri_context
    struct st_api *stapi;
    struct st_context_iface *st;
    struct pp_queue_t *pp;
-   unsigned int pp_enabled[PP_FILTERS];
    struct hud_context *hud;
 };
 
diff --git a/src/gallium/state_trackers/dri/common/dri_screen.c b/src/gallium/state_trackers/dri/common/dri_screen.c
index f19998b..bb4d5b6 100644
--- a/src/gallium/state_trackers/dri/common/dri_screen.c
+++ b/src/gallium/state_trackers/dri/common/dri_screen.c
@@ -382,6 +382,17 @@ dri_destroy_screen(__DRIscreen * sPriv)
    sPriv->extensions = NULL;
 }
 
+static void
+dri_postprocessing_init(struct dri_screen *screen)
+{
+   unsigned i;
+
+   for (i = 0; i < PP_FILTERS; i++) {
+      screen->pp_enabled[i] = driQueryOptioni(&screen->optionCache,
+                                              pp_filters[i].name);
+   }
+}
+
 const __DRIconfig **
 dri_init_screen_helper(struct dri_screen *screen,
                        struct pipe_screen *pscreen)
@@ -426,6 +437,8 @@ dri_init_screen_helper(struct dri_screen *screen,
       util_format_s3tc_enabled = TRUE;
    }
 
+   dri_postprocessing_init(screen);
+
    return dri_fill_in_modes(screen);
 }
 
diff --git a/src/gallium/state_trackers/dri/common/dri_screen.h b/src/gallium/state_trackers/dri/common/dri_screen.h
index 859ebfd..18ede86 100644
--- a/src/gallium/state_trackers/dri/common/dri_screen.h
+++ b/src/gallium/state_trackers/dri/common/dri_screen.h
@@ -39,6 +39,7 @@
 #include "pipe/p_context.h"
 #include "pipe/p_state.h"
 #include "state_tracker/st_api.h"
+#include "postprocess/filters.h"
 
 struct dri_context;
 struct dri_drawable;
@@ -63,6 +64,9 @@ struct dri_screen
    /** The screen's effective configuration options */
    driOptionCache optionCache;
 
+   /* Which postprocessing filters are enabled. */
+   unsigned pp_enabled[PP_FILTERS];
+
    /* drm */
    int fd;
 
-- 
1.8.1.2



More information about the mesa-dev mailing list