aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2491-drm-amd-display-Make-sure-DSC-slice-height-is-divisi.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2491-drm-amd-display-Make-sure-DSC-slice-height-is-divisi.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2491-drm-amd-display-Make-sure-DSC-slice-height-is-divisi.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2491-drm-amd-display-Make-sure-DSC-slice-height-is-divisi.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2491-drm-amd-display-Make-sure-DSC-slice-height-is-divisi.patch
new file mode 100644
index 00000000..0994d782
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2491-drm-amd-display-Make-sure-DSC-slice-height-is-divisi.patch
@@ -0,0 +1,49 @@
+From 89f5cf507f87f904dde466d745907aa5d369ddf4 Mon Sep 17 00:00:00 2001
+From: Nikola Cornij <nikola.cornij@amd.com>
+Date: Thu, 28 Mar 2019 17:40:18 -0400
+Subject: [PATCH 2491/2940] drm/amd/display: Make sure DSC slice height is
+ divisible by 2 for 4:2:0 color format
+
+[why] DSC spec requires this
+
+Signed-off-by: Nikola Cornij <nikola.cornij@amd.com>
+Reviewed-by: Wenjing Liu <Wenjing.Liu@amd.com>
+Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c | 13 +++++++++++--
+ 1 file changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c b/drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c
+index c649f62d183d..6357325d3c90 100644
+--- a/drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c
++++ b/drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c
+@@ -658,14 +658,23 @@ static bool setup_dsc_config(
+ dsc_cfg->num_slices_h = num_slices_h;
+ slice_width = pic_width / num_slices_h;
+
+- // Vertical number of slices: start from policy and pick the first one that height is divisible by
++ // Vertical number of slices: start from policy and pick the first one that height is divisible by.
++ // For 4:2:0 make sure the slice height is divisible by 2 as well.
+ pic_height = timing->v_addressable + timing->v_border_top + timing->v_border_bottom;
+ num_slices_v = dsc_policy.num_slices_v;
+ if (num_slices_v < 1)
+ num_slices_v = 1;
+
+- while (num_slices_v >= 1 && (pic_height % num_slices_v != 0))
++ while (num_slices_v >= 1) {
++ if (timing->pixel_encoding == PIXEL_ENCODING_YCBCR420) {
++ int slice_height = pic_height / num_slices_v;
++ if (pic_height % num_slices_v == 0 && slice_height % 2 == 0)
++ break;
++ } else if (pic_height % num_slices_v == 0)
++ break;
++
+ num_slices_v--;
++ }
+
+ dsc_cfg->num_slices_v = num_slices_v;
+
+--
+2.17.1
+