aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0466-drm-amd-display-program-scaler-not-called.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0466-drm-amd-display-program-scaler-not-called.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0466-drm-amd-display-program-scaler-not-called.patch85
1 files changed, 85 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0466-drm-amd-display-program-scaler-not-called.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0466-drm-amd-display-program-scaler-not-called.patch
new file mode 100644
index 00000000..6d45d5ba
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0466-drm-amd-display-program-scaler-not-called.patch
@@ -0,0 +1,85 @@
+From b58852edee63cf31fa02b138c7dc905395355b4c Mon Sep 17 00:00:00 2001
+From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
+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 <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>
+---
+ 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
+