]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/dp: Account with DSC BW overhead for compressed DP-SST stream BW
authorImre Deak <imre.deak@intel.com>
Mon, 15 Dec 2025 19:23:51 +0000 (21:23 +0200)
committerImre Deak <imre.deak@intel.com>
Fri, 19 Dec 2025 14:46:40 +0000 (16:46 +0200)
A DSC compressed stream requires FEC (except for eDP), which has a BW
overhead on non-UHBR links that must be accounted for explicitly. Do
that during computing the required BW.

Note that the overhead doesn't need to be accounted for on UHBR links
where FEC is always enabled and so the corresponding overhead is part of
the channel coding efficiency instead (i.e. the overhead is part of the
available vs. the required BW).

Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patch.msgid.link/20251215192357.172201-12-imre.deak@intel.com
drivers/gpu/drm/i915/display/intel_dp.c

index a2939843a72ad28ca9c2f7174b0871484879fc3e..dc14349de3941651c0a7819d274b8fa787e6096a 100644 (file)
@@ -2086,12 +2086,16 @@ static int dsc_compute_link_config(struct intel_dp *intel_dp,
                                if (ret)
                                        continue;
                        } else {
+                               unsigned long bw_overhead_flags =
+                                       pipe_config->fec_enable ? DRM_DP_BW_OVERHEAD_FEC : 0;
+
                                if (!is_bw_sufficient_for_dsc_config(intel_dp,
                                                                     link_rate, lane_count,
                                                                     adjusted_mode->crtc_clock,
                                                                     adjusted_mode->hdisplay,
                                                                     pipe_config->dsc.slice_count,
-                                                                    dsc_bpp_x16, 0))
+                                                                    dsc_bpp_x16,
+                                                                    bw_overhead_flags))
                                        continue;
                        }