This patchset cleans up the DP link BW and the DSC slice config computation with the following aims:
- Fix the BW calculation taking into account all the MST,DSC,SSC,FEC related overhead and use the proper UHBR/non-UHBR BW utilization factor (which depends on the symbol size vs. effective data size ratio). - Unify the BW calculation during mode validation and state computation. - Unify the BW calculation for eDP / DP-SST / DP-MST. - Compute the DSC slice configuration in a way better reflecting the pipe/DSC stream engine/slice parameters of the config. Cc: Ankit Nautiyal <[email protected]> Imre Deak (50): drm/dp: Parse all DSC slice count caps for eDP 1.5 drm/dp: Add drm_dp_dsc_sink_slice_count_mask() drm/i915/dp: Fix DSC sink's slice count capability check drm/i915/dp: Return a fixed point BPP value from intel_dp_output_bpp() drm/i915/dp: Use a mode's crtc_clock vs. clock during state computation drm/i915/dp: Factor out intel_dp_link_bw_overhead() drm/i915/dp: Fix BW check in is_bw_sufficient_for_dsc_config() drm/i915/dp: Use the effective data rate for DP BW calculation drm/i915/dp: Use the effective data rate for DP compressed BW calculation drm/i915/dp: Account with MST,SSC BW overhead for uncompressed DP-MST stream BW drm/i915/dp: Account with DSC BW overhead for compressed DP-SST stream BW drm/i915/dp: Account with pipe joiner max compressed BPP limit for DP-MST and eDP drm/i915/dp: Drop unused timeslots param from dsc_compute_link_config() drm/i915/dp: Factor out align_max_sink_dsc_input_bpp() drm/i915/dp: Factor out align_max_vesa_compressed_bpp_x16() drm/i915/dp: Fail state computation for invalid min/max link BPP values drm/i915/dp: Fail state computation for invalid max throughput BPP value drm/i915/dp: Fail state computation for invalid max sink compressed BPP value drm/i915/dp: Fail state computation for invalid DSC source input BPP values drm/i915/dp: Align min/max DSC input BPPs to sink caps drm/i915/dp: Align min/max compressed BPPs when calculating BPP limits drm/i915/dp: Drop intel_dp parameter from intel_dp_compute_config_link_bpp_limits() drm/i915/dp: Pass intel_output_format to intel_dp_dsc_sink_{min_max}_compressed_bpp() drm/i915/dp: Pass mode clock to dsc_throughput_quirk_max_bpp_x16() drm/i915/dp: Factor out compute_min_compressed_bpp_x16() drm/i915/dp: Factor out compute_max_compressed_bpp_x16() drm/i915/dp: Add intel_dp_mode_valid_with_dsc() drm/i915/dp: Unify detect and compute time DSC mode BW validation drm/i915/dp: Use helpers to align min/max compressed BPPs drm/i915/dp: Simplify computing DSC BPPs for eDP drm/i915/dp: Simplify computing DSC BPPs for DP-SST drm/i915/dp: Simplify computing forced DSC BPP for DP-SST drm/i915/dp: Unify computing compressed BPP for DP-SST and eDP drm/i915/dp: Simplify eDP vs. DP compressed BPP computation drm/i915/dp: Simplify computing the DSC compressed BPP for DP-MST drm/i915/dsc: Track the detaild DSC slice configuration drm/i915/dsc: Track the DSC stream count in the DSC slice config state drm/i915/dsi: Move initialization of DSI DSC streams-per-pipe to fill_dsc() drm/i915/dsi: Track the detailed DSC slice configuration drm/i915/dp: Track the detailed DSC slice configuration drm/i915/dsc: Switch to using intel_dsc_line_slice_count() drm/i915/dp: Factor out intel_dp_dsc_min_slice_count() drm/i915/dp: Use int for DSC slice count variables drm/i915/dp: Rename test_slice_count to slices_per_line drm/i915/dp: Simplify the DSC slice config loop's slices-per-pipe iteration drm/i915/dsc: Add intel_dsc_get_slice_config() drm/i915/dsi: Use intel_dsc_get_slice_config() drm/i915/dp: Unify DP and eDP slice count computation drm/i915/dp: Add intel_dp_dsc_get_slice_config() drm/i915/dp: Use intel_dp_dsc_get_slice_config() drivers/gpu/drm/display/drm_dp_helper.c | 103 ++- drivers/gpu/drm/i915/display/icl_dsi.c | 6 - drivers/gpu/drm/i915/display/intel_bios.c | 27 +- drivers/gpu/drm/i915/display/intel_display.c | 2 +- .../drm/i915/display/intel_display_types.h | 7 +- drivers/gpu/drm/i915/display/intel_dp.c | 868 +++++++++--------- drivers/gpu/drm/i915/display/intel_dp.h | 26 +- .../drm/i915/display/intel_dp_link_training.c | 4 +- drivers/gpu/drm/i915/display/intel_dp_mst.c | 110 +-- drivers/gpu/drm/i915/display/intel_vdsc.c | 71 +- drivers/gpu/drm/i915/display/intel_vdsc.h | 6 + include/drm/display/drm_dp_helper.h | 3 + 12 files changed, 658 insertions(+), 575 deletions(-) -- 2.49.1
