From: Marek Olšák Date: Tue, 30 Jul 2013 20:29:20 +0000 (+0200) Subject: st/dri: move enabling postprocessing to dri_screen X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=dda936e057b01b6401de7747038d341332c6d128;p=mesa.git st/dri: move enabling postprocessing to dri_screen The driconf options are global. Reviewed-by: Kenneth Graunke Reviewed-by: Brian Paul --- diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c index ab80fc75bd4..66034915447 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 5af2861377a..2734ee50daa 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 f19998bb7ba..bb4d5b674d9 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 859ebfd7f32..18ede869ad7 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;