st/dri: move enabling postprocessing to dri_screen
authorMarek Olšák <marek.olsak@amd.com>
Tue, 30 Jul 2013 20:29:20 +0000 (22:29 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 30 Jul 2013 21:31:24 +0000 (23:31 +0200)
The driconf options are global.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/state_trackers/dri/common/dri_context.c
src/gallium/state_trackers/dri/common/dri_context.h
src/gallium/state_trackers/dri/common/dri_screen.c
src/gallium/state_trackers/dri/common/dri_screen.h

index ab80fc75bd4187e2b8d9b34c5e29f9bbb454a36a..66034915447501d8238b022e9d11f8bbbdfed232 100644 (file)
 #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);
    }
 
index 5af2861377a9b3fbae4e526ca770cb0395769da5..2734ee50daa4dd3dc4a65b50919468a5a579da05 100644 (file)
@@ -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;
 };
 
index f19998bb7ba9dfc96a98d5cf605fadf1f0916fc9..bb4d5b674d9518dbf47b87912982d8b3a86553a5 100644 (file)
@@ -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);
 }
 
index 859ebfd7f32171990bf04406431c9eca8718d66e..18ede869ad747f43242d0c4ac38cd14f1783b297 100644 (file)
@@ -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;