On Thu, 2025-11-27 at 19:50 +0200, Imre Deak wrote: > Simplify things by computing the detailed slice configuration using > intel_dp_dsc_get_slice_config(), instead of open-coding the same. > > Signed-off-by: Imre Deak <[email protected]> > --- > drivers/gpu/drm/i915/display/intel_dp.c | 35 +++-------------------- > -- > 1 file changed, 3 insertions(+), 32 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c > b/drivers/gpu/drm/i915/display/intel_dp.c > index 003f4b18c1175..d41c75c6f7831 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -2387,7 +2387,6 @@ int intel_dp_dsc_compute_config(struct intel_dp > *intel_dp, > &pipe_config->hw.adjusted_mode; > int num_joined_pipes = > intel_crtc_num_joined_pipes(pipe_config); > bool is_mst = intel_crtc_has_type(pipe_config, > INTEL_OUTPUT_DP_MST); > - int slices_per_line; > int ret; > > /* > @@ -2413,39 +2412,11 @@ int intel_dp_dsc_compute_config(struct > intel_dp *intel_dp, > } > } > > - /* Calculate Slice count */ > - slices_per_line = intel_dp_dsc_get_slice_count(connector, > - > adjusted_mode->crtc_clock, > - > adjusted_mode->crtc_hdisplay, > - > num_joined_pipes); > - if (!slices_per_line) > + if (!intel_dp_dsc_get_slice_config(connector, adjusted_mode- > >crtc_clock, > + adjusted_mode- > >crtc_hdisplay, num_joined_pipes, > + &pipe_config- > >dsc.slice_config)) > return -EINVAL; > > - /* > - * VDSC engine operates at 1 Pixel per clock, so if peak > pixel rate > - * is greater than the maximum Cdclock and if slice count is > even > - * then we need to use 2 VDSC instances. > - * In case of Ultrajoiner along with 12 slices we need to > use 3 > - * VDSC instances. > - */
I'll guess you have considered this comment being useless? Anyways, patch looks ok: Reviewed-by: Jouni Högander <[email protected]> > - pipe_config->dsc.slice_config.pipes_per_line = > num_joined_pipes; > - > - if (pipe_config->joiner_pipes && num_joined_pipes == 4 && > - slices_per_line == 12) > - pipe_config->dsc.slice_config.streams_per_pipe = 3; > - else if (pipe_config->joiner_pipes || slices_per_line > 1) > - pipe_config->dsc.slice_config.streams_per_pipe = 2; > - else > - pipe_config->dsc.slice_config.streams_per_pipe = 1; > - > - pipe_config->dsc.slice_config.slices_per_stream = > - slices_per_line / > - pipe_config->dsc.slice_config.pipes_per_line / > - pipe_config->dsc.slice_config.streams_per_pipe; > - > - drm_WARN_ON(display->drm, > - intel_dsc_line_slice_count(&pipe_config- > >dsc.slice_config) != slices_per_line); > - > ret = intel_dp_dsc_compute_params(connector, pipe_config); > if (ret < 0) { > drm_dbg_kms(display->drm,
