mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-29 11:44:39 -04:00
drm/amd/display: take ODM slice count into account when deciding DSC slice
[why] DSC slice must be divisible by ODM slice count. [how] If DSC slice count is not a multiple of ODM slice count, increase DSC slice until it is. Otherwise fail to compute DSC configuration. Reviewed-by: Chaitanya Dhere <chaitanya.dhere@amd.com> Acked-by: Wayne Lin <wayne.lin@amd.com> Signed-off-by: Wenjing Liu <wenjing.liu@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
6aa96aa8ff
commit
3d1967ec9b
@@ -922,14 +922,30 @@ static bool setup_dsc_config(
|
||||
else
|
||||
is_dsc_possible = false;
|
||||
}
|
||||
// When we force 2:1 ODM, we can't have 1 slice to divide amongst 2 separate DSC instances
|
||||
// need to enforce at minimum 2 horizontal slices
|
||||
if (options->dsc_force_odm_hslice_override) {
|
||||
num_slices_h = fit_num_slices_up(dsc_common_caps.slice_caps, 2);
|
||||
if (num_slices_h == 0)
|
||||
is_dsc_possible = false;
|
||||
// When we force ODM, num dsc h slices must be divisible by num odm h slices
|
||||
switch (options->dsc_force_odm_hslice_override) {
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
if (num_slices_h < 2)
|
||||
num_slices_h = fit_num_slices_up(dsc_common_caps.slice_caps, 2);
|
||||
break;
|
||||
case 3:
|
||||
if (dsc_common_caps.slice_caps.bits.NUM_SLICES_12)
|
||||
num_slices_h = 12;
|
||||
else
|
||||
num_slices_h = 0;
|
||||
break;
|
||||
case 4:
|
||||
if (num_slices_h < 4)
|
||||
num_slices_h = fit_num_slices_up(dsc_common_caps.slice_caps, 4);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (num_slices_h == 0)
|
||||
is_dsc_possible = false;
|
||||
if (!is_dsc_possible)
|
||||
goto done;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user