diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3711-drm-amd-display-config-to-override-DSC-start-slice-h.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3711-drm-amd-display-config-to-override-DSC-start-slice-h.patch | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3711-drm-amd-display-config-to-override-DSC-start-slice-h.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3711-drm-amd-display-config-to-override-DSC-start-slice-h.patch new file mode 100644 index 00000000..f9c606f0 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3711-drm-amd-display-config-to-override-DSC-start-slice-h.patch @@ -0,0 +1,83 @@ +From 881ac972ea098c8cf5d2dcfa00bcdb9cf2c90433 Mon Sep 17 00:00:00 2001 +From: Nikola Cornij <nikola.cornij@amd.com> +Date: Fri, 16 Aug 2019 14:26:56 -0400 +Subject: [PATCH 3711/4256] drm/amd/display: config to override DSC start slice + height + +[why] +It's sometimes useful to have this option when debugging + +[how] +Add a config flag. If the flag is not set, use driver default policy. +If the flag is set, use the value from the flag as the starting DSC slice +height. + +Signed-off-by: Nikola Cornij <nikola.cornij@amd.com> +Reviewed-by: Martin Leung <Martin.Leung@amd.com> +Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> +--- + drivers/gpu/drm/amd/display/dc/dc.h | 1 + + drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c | 14 ++++++++------ + 2 files changed, 9 insertions(+), 6 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h +index 9e006ad6fa47..aed84a2d9ff4 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc.h ++++ b/drivers/gpu/drm/amd/display/dc/dc.h +@@ -350,6 +350,7 @@ struct dc_debug_options { + bool disable_hubp_power_gate; + #ifdef CONFIG_DRM_AMD_DC_DSC_SUPPORT + bool disable_dsc_power_gate; ++ int dsc_min_slice_height_override; + #endif + bool disable_pplib_wm_range; + enum wm_report_mode pplib_wm_report_mode; +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 5995bcdfed54..929ebd4cfb8c 100644 +--- a/drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c ++++ b/drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c +@@ -512,6 +512,7 @@ static bool setup_dsc_config( + const struct dsc_enc_caps *dsc_enc_caps, + int target_bandwidth_kbps, + const struct dc_crtc_timing *timing, ++ int min_slice_height_override, + struct dc_dsc_config *dsc_cfg) + { + struct dsc_enc_caps dsc_common_caps; +@@ -680,7 +681,10 @@ static bool setup_dsc_config( + + // Slice height (i.e. number of slices per column): start with 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. +- slice_height = min(dsc_policy.min_sice_height, pic_height); ++ if (min_slice_height_override == 0) ++ slice_height = min(dsc_policy.min_sice_height, pic_height); ++ else ++ slice_height = min(min_slice_height_override, pic_height); + + while (slice_height < pic_height && (pic_height % slice_height != 0 || + (timing->pixel_encoding == PIXEL_ENCODING_YCBCR420 && slice_height % 2 != 0))) +@@ -820,10 +824,8 @@ bool dc_dsc_compute_bandwidth_range( + timing->pixel_encoding, &dsc_common_caps); + + if (is_dsc_possible) +- is_dsc_possible = setup_dsc_config(dsc_sink_caps, +- &dsc_enc_caps, +- 0, +- timing, &config); ++ is_dsc_possible = setup_dsc_config(dsc_sink_caps, &dsc_enc_caps, 0, timing, ++ dc->debug.dsc_min_slice_height_override, &config); + + if (is_dsc_possible) + get_dsc_bandwidth_range(min_bpp, max_bpp, &dsc_common_caps, timing, range); +@@ -845,7 +847,7 @@ bool dc_dsc_compute_config( + is_dsc_possible = setup_dsc_config(dsc_sink_caps, + &dsc_enc_caps, + target_bandwidth_kbps, +- timing, dsc_cfg); ++ timing, dc->debug.dsc_min_slice_height_override, dsc_cfg); + return is_dsc_possible; + } + #endif /* CONFIG_DRM_AMD_DC_DSC_SUPPORT */ +-- +2.17.1 + |