From b842b68593321e3b3db8cc0e53ca7e16d60075c8 Mon Sep 17 00:00:00 2001 From: Yongqiang Sun Date: Wed, 3 May 2017 10:25:51 -0400 Subject: [PATCH 0403/4131] drm/amd/display: Only apply ctx for specific surface. Signed-off-by: Yongqiang Sun Reviewed-by: Tony Cheng Acked-by: Harry Wentland Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c index fb4eb43..ece8c96 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c @@ -1689,19 +1689,21 @@ static void dcn10_apply_ctx_for_surface( { int i; - memcpy(context->res_ctx.mpc_tree, - dc->current_context->res_ctx.mpc_tree, - sizeof(struct mpc_tree_cfg) * dc->res_pool->pipe_count); - for (i = 0; i < dc->res_pool->pipe_count; i++) { struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[i]; - if (!pipe_ctx->surface) + if (!pipe_ctx->surface || pipe_ctx->surface != surface) continue; + /* looking for top pipe to program */ - if (!pipe_ctx->top_pipe) + if (!pipe_ctx->top_pipe) { + memcpy(context->res_ctx.mpc_tree, + dc->current_context->res_ctx.mpc_tree, + sizeof(struct mpc_tree_cfg) * dc->res_pool->pipe_count); + program_all_pipe_in_tree(dc, pipe_ctx, context); + } } for (i = 0; i < dc->res_pool->pipe_count; i++) { -- 2.7.4