From b58852edee63cf31fa02b138c7dc905395355b4c Mon Sep 17 00:00:00 2001 From: Andrey Grodzovsky Date: Fri, 19 May 2017 17:40:50 -0400 Subject: [PATCH 0466/4131] drm/amd/display: program scaler not called. Scaler code in case of UPDATE_TYPE_MED was not called since new pipe context and current context are the same. Signed-off-by: Andrey Grodzovsky Reviewed-by: Dmytro Laktyushkin Acked-by: Harry Wentland Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/display/dc/core/dc.c | 23 ++++++++++++++++++++-- .../amd/display/dc/dce110/dce110_hw_sequencer.c | 6 ++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c index b428c7c..4900e80 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c @@ -1011,12 +1011,23 @@ bool dc_commit_surfaces_to_stream( struct dc_plane_info plane_info[MAX_SURFACES]; struct dc_scaling_info scaling_info[MAX_SURFACES]; int i; + bool ret; + struct dc_stream_update *stream_update = + dm_alloc(sizeof(struct dc_stream_update)); + + if (!stream_update) { + BREAK_TO_DEBUGGER(); + return false; + } memset(updates, 0, sizeof(updates)); memset(flip_addr, 0, sizeof(flip_addr)); memset(plane_info, 0, sizeof(plane_info)); memset(scaling_info, 0, sizeof(scaling_info)); + stream_update->src = dc_stream->src; + stream_update->dst = dc_stream->dst; + for (i = 0; i < new_surface_count; i++) { updates[i].surface = new_surfaces[i]; updates[i].gamma = @@ -1041,9 +1052,17 @@ bool dc_commit_surfaces_to_stream( updates[i].plane_info = &plane_info[i]; updates[i].scaling_info = &scaling_info[i]; } - dc_update_surfaces_for_stream(dc, updates, new_surface_count, dc_stream); - return dc_post_update_surfaces_to_stream(dc); + dc_update_surfaces_and_stream( + dc, + updates, + new_surface_count, + dc_stream, stream_update); + + ret = dc_post_update_surfaces_to_stream(dc); + + dm_free(stream_update); + return ret; } static bool is_surface_in_context( diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c index 65c6915..7dd4b02 100644 --- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c @@ -2408,10 +2408,8 @@ static void dce110_program_front_end_for_pipe( pipe_ctx->xfm->funcs->transform_set_gamut_remap(pipe_ctx->xfm, &adjust); pipe_ctx->scl_data.lb_params.alpha_en = pipe_ctx->bottom_pipe != 0; - if (old_pipe && memcmp(&old_pipe->scl_data, - &pipe_ctx->scl_data, - sizeof(struct scaler_data)) != 0) - program_scaler(dc, pipe_ctx); + + program_scaler(dc, pipe_ctx); mi->funcs->mem_input_program_surface_config( mi, -- 2.7.4