From: Andrey Grodzovsky <[email protected]>

Scaler code in case of UPDATE_TYPE_MED was not called
since new pipe context and current context are the same.

Change-Id: Ib8ce1c3497fff24ce78e20a092139a755fb1423d
Signed-off-by: Andrey Grodzovsky <[email protected]>
Reviewed-by: Dmytro Laktyushkin <[email protected]>
Acked-by: Harry Wentland <[email protected]>
---
 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 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,
-- 
2.11.0

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to