aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2816-drm-amd-display-fix-split-viewport-rounding-error.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2816-drm-amd-display-fix-split-viewport-rounding-error.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2816-drm-amd-display-fix-split-viewport-rounding-error.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2816-drm-amd-display-fix-split-viewport-rounding-error.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2816-drm-amd-display-fix-split-viewport-rounding-error.patch
new file mode 100644
index 00000000..c4928595
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2816-drm-amd-display-fix-split-viewport-rounding-error.patch
@@ -0,0 +1,54 @@
+From fbb1816d670780d4b43b32a1383a9c4e8a4d06ef Mon Sep 17 00:00:00 2001
+From: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
+Date: Fri, 10 Nov 2017 13:53:53 -0500
+Subject: [PATCH 2816/4131] drm/amd/display: fix split viewport rounding error
+
+Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@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/calcs/dcn_calcs.c | 4 ++++
+ drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 10 ++++------
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c
+index a4fbca3..d14fefa 100644
+--- a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c
++++ b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c
+@@ -878,6 +878,10 @@ bool dcn_validate_bandwidth(
+ + pipe->bottom_pipe->plane_res.scl_data.recout.width;
+ }
+
++ ASSERT(pipe->plane_res.scl_data.ratios.horz.value != dal_fixed31_32_one.value
++ || v->scaler_rec_out_width[input_idx] == v->viewport_width[input_idx]);
++ ASSERT(pipe->plane_res.scl_data.ratios.vert.value != dal_fixed31_32_one.value
++ || v->scaler_recout_height[input_idx] == v->viewport_height[input_idx]);
+ v->dcc_enable[input_idx] = pipe->plane_state->dcc.enable ? dcn_bw_yes : dcn_bw_no;
+ v->source_pixel_format[input_idx] = tl_pixel_format_to_bw_defs(
+ pipe->plane_state->format);
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+index 56c259d..80b131b 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+@@ -509,13 +509,11 @@ static void calculate_viewport(struct pipe_ctx *pipe_ctx)
+ right_view = (plane_state->rotation == ROTATION_ANGLE_270) != sec_split;
+
+ if (right_view) {
+- data->viewport.width /= 2;
+- data->viewport_c.width /= 2;
+- data->viewport.x += data->viewport.width;
+- data->viewport_c.x += data->viewport_c.width;
++ data->viewport.x += data->viewport.width / 2;
++ data->viewport_c.x += data->viewport_c.width / 2;
+ /* Ceil offset pipe */
+- data->viewport.width += data->viewport.width % 2;
+- data->viewport_c.width += data->viewport_c.width % 2;
++ data->viewport.width = (data->viewport.width + 1) / 2;
++ data->viewport_c.width = (data->viewport_c.width + 1) / 2;
+ } else {
+ data->viewport.width /= 2;
+ data->viewport_c.width /= 2;
+--
+2.7.4
+