Skip to content

Commit 3755e20

Browse files
committed
drm/i915/dp: Account with pipe joiner max compressed BPP limit for DP-MST and eDP
The pipe joiner maximum compressed BPP must be limited based on the pipe joiner memory size and BW, do that for all DP outputs by adjusting the max compressed BPP value already in intel_dp_compute_config_link_bpp_limits() (which is used by all output types). This way the BPP doesn't need to be adjusted in dsc_compute_compressed_bpp() (called for DP-SST after the above limits were computed already), so remove the adjustment from there. Reviewed-by: Luca Coelho <luciano.coelho@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://patch.msgid.link/20251215192357.172201-13-imre.deak@intel.com
1 parent 260aef1 commit 3755e20

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

drivers/gpu/drm/i915/display/intel_dp.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2246,19 +2246,12 @@ static int dsc_compute_compressed_bpp(struct intel_dp *intel_dp,
22462246
{
22472247
struct intel_display *display = to_intel_display(intel_dp);
22482248
const struct intel_connector *connector = to_intel_connector(conn_state->connector);
2249-
const struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode;
22502249
int min_bpp_x16, max_bpp_x16, bpp_step_x16;
2251-
int dsc_joiner_max_bpp;
2252-
int num_joined_pipes = intel_crtc_num_joined_pipes(pipe_config);
22532250
int link_bpp_x16;
22542251
int bpp_x16;
22552252
int ret;
22562253

2257-
dsc_joiner_max_bpp = get_max_compressed_bpp_with_joiner(display, adjusted_mode->crtc_clock,
2258-
adjusted_mode->hdisplay,
2259-
num_joined_pipes);
2260-
max_bpp_x16 = min(fxp_q4_from_int(dsc_joiner_max_bpp), limits->link.max_bpp_x16);
2261-
2254+
max_bpp_x16 = limits->link.max_bpp_x16;
22622255
bpp_step_x16 = intel_dp_dsc_bpp_step_x16(connector);
22632256

22642257
/* Compressed BPP should be less than the Input DSC bpp */
@@ -2614,18 +2607,25 @@ intel_dp_compute_config_link_bpp_limits(struct intel_dp *intel_dp,
26142607
int dsc_src_min_bpp, dsc_sink_min_bpp, dsc_min_bpp;
26152608
int dsc_src_max_bpp, dsc_sink_max_bpp, dsc_max_bpp;
26162609
int throughput_max_bpp_x16;
2610+
int joiner_max_bpp;
26172611

26182612
dsc_src_min_bpp = intel_dp_dsc_min_src_compressed_bpp();
26192613
dsc_sink_min_bpp = intel_dp_dsc_sink_min_compressed_bpp(crtc_state);
26202614
dsc_min_bpp = max(dsc_src_min_bpp, dsc_sink_min_bpp);
26212615
limits->link.min_bpp_x16 = fxp_q4_from_int(dsc_min_bpp);
26222616

26232617
dsc_src_max_bpp = dsc_src_max_compressed_bpp(intel_dp);
2618+
joiner_max_bpp =
2619+
get_max_compressed_bpp_with_joiner(display,
2620+
adjusted_mode->crtc_clock,
2621+
adjusted_mode->hdisplay,
2622+
intel_crtc_num_joined_pipes(crtc_state));
26242623
dsc_sink_max_bpp = intel_dp_dsc_sink_max_compressed_bpp(connector,
26252624
crtc_state,
26262625
limits->pipe.max_bpp / 3);
26272626
dsc_max_bpp = dsc_sink_max_bpp ?
26282627
min(dsc_sink_max_bpp, dsc_src_max_bpp) : dsc_src_max_bpp;
2628+
dsc_max_bpp = min(dsc_max_bpp, joiner_max_bpp);
26292629

26302630
max_link_bpp_x16 = min(max_link_bpp_x16, fxp_q4_from_int(dsc_max_bpp));
26312631

0 commit comments

Comments
 (0)