diff options
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.patch | 49 |
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 + |