On Tue, 17 Dec 2024, Ankit Nautiyal <ankit.k.nauti...@intel.com> wrote:
> Check for DSC support before computing link config with DSC.
> For DP MST we are already doing the same.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nauti...@intel.com>
> Reviewed-by: Suraj Kandpal <suraj.kand...@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 908b9887f89b..dd2da9facaad 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2375,9 +2375,6 @@ int intel_dp_dsc_compute_config(struct intel_dp 
> *intel_dp,
>                intel_dp_supports_fec(intel_dp, connector, pipe_config) &&
>                !intel_dp_is_uhbr(pipe_config));
>  
> -     if (!intel_dp_supports_dsc(intel_dp, connector, pipe_config))
> -             return -EINVAL;
> -
>       if (!intel_dp_dsc_supports_format(connector, 
> pipe_config->output_format))
>               return -EINVAL;
>  
> @@ -2652,6 +2649,9 @@ intel_dp_compute_link_config(struct intel_encoder 
> *encoder,
>                           str_yes_no(ret), str_yes_no(joiner_needs_dsc),
>                           str_yes_no(intel_dp->force_dsc_en));
>  
> +             if (!intel_dp_supports_dsc(intel_dp, connector, pipe_config))
> +                     return -EINVAL;
> +

The (pre-existing) problem with this is that we debug log we fall back
to DSC, while we don't.

Maybe we should do something like this instead, both in SST and MST code:

--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -2644,6 +2644,11 @@ intel_dp_compute_link_config(struct intel_encoder 
*encoder,
                        dsc_needed = true;
        }
 
+       if (dsc_needed && !intel_dp_supports_dsc(connector, pipe_config)) {
+               drm_dbg_kms(display->drm, "DSC required but not available.\n");
+               return -EINVAL;
+       }
+
        if (dsc_needed) {
                drm_dbg_kms(display->drm,
                            "Try DSC (fallback=%s, joiner=%s, force=%s)\n",

BR,
Jani.

>               if (!intel_dp_compute_config_limits(intel_dp, pipe_config,
>                                                   respect_downstream_limits,
>                                                   true,

-- 
Jani Nikula, Intel

Reply via email to