st/dri: move enabling postprocessing to dri_screen

The driconf options are global.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Marek Olšák
2013-07-30 22:29:20 +02:00
parent 772070527f
commit dda936e057
4 changed files with 18 additions and 16 deletions
@@ -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);
}
@@ -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;
};
@@ -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);
}
@@ -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;