summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Grodzovsky <Andrey.Grodzovsky@amd.com>2017-05-19 17:40:50 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-09-26 18:07:31 -0400
commitc1473558e617d886276e4a8b3c139b681d90d67c (patch)
tree1b4f8b2a668363adac351e63bce5b035528089e4
parente73b59b7e0cdecf0663b76f77b770c88b2d61604 (diff)
downloadlinux-c1473558e617d886276e4a8b3c139b681d90d67c.tar.bz2
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 <Andrey.Grodzovsky@amd.com> Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com> Acked-by: Harry Wentland <Harry.Wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/display/dc/core/dc.c23
-rw-r--r--drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c6
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 b428c7c6559b..4900e8073c69 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 65c691569eb7..7dd4b02b5938 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,