X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fstate_tracker%2Fst_context.c;h=0a0bd8ba1ca6d2cc946a1bce798751f1de21d7d8;hb=45f4dab62bd7c4daf9d9fc357f4ed1275445f13a;hp=34bfb845bb0208add6aceedec1f9f1b64ee605da;hpb=966f155623e5a626f1d788af7e0f602cdcee6993;p=mesa.git diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index 34bfb845bb0..0a0bd8ba1ca 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -79,6 +79,7 @@ #include "st_vdpau.h" #include "st_texture.h" #include "pipe/p_context.h" +#include "util/u_cpu_detect.h" #include "util/u_inlines.h" #include "util/u_upload_mgr.h" #include "util/u_vbuf.h" @@ -274,6 +275,7 @@ st_destroy_context_priv(struct st_context *st, bool destroy_pipe) /* free glReadPixels cache data */ st_invalidate_readpix_cache(st); + util_throttle_deinit(st->pipe->screen, &st->throttle); cso_destroy_context(st->cso_context); @@ -460,12 +462,22 @@ st_create_context_priv(struct gl_context *ctx, struct pipe_context *pipe, screen->get_param(screen, PIPE_CAP_TGSI_PACK_HALF_FLOAT); st->has_multi_draw_indirect = screen->get_param(screen, PIPE_CAP_MULTI_DRAW_INDIRECT); + st->has_single_pipe_stat = + screen->get_param(screen, PIPE_CAP_QUERY_PIPELINE_STATISTICS_SINGLE); + st->has_indep_blend_func = + screen->get_param(screen, PIPE_CAP_INDEP_BLEND_FUNC); + st->needs_rgb_dst_alpha_override = + screen->get_param(screen, PIPE_CAP_RGB_OVERRIDE_DST_ALPHA_BLEND); st->has_hw_atomics = screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT, PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS) ? true : false; + util_throttle_init(&st->throttle, + screen->get_param(screen, + PIPE_CAP_MAX_TEXTURE_UPLOAD_MEMORY_BUDGET)); + /* GL limits and extensions */ st_init_limits(pipe->screen, &ctx->Const, &ctx->Extensions, ctx->API); st_init_extensions(pipe->screen, &ctx->Const, @@ -563,6 +575,8 @@ st_create_context(gl_api api, struct pipe_context *pipe, struct dd_function_table funcs; struct st_context *st; + util_cpu_detect(); + memset(&funcs, 0, sizeof(funcs)); st_init_driver_functions(pipe->screen, &funcs);