On Tue, Dec 09, 2025 at 10:51:10AM +0200, Luca Coelho wrote: > On Thu, 2025-11-27 at 19:49 +0200, Imre Deak wrote: > > A DSC sink supporting DSC slice count N, not necessarily supports slice > > counts less than N. Hence the driver should check the sink's support for > > a particular slice count before using that slice count, fix > > intel_dp_dsc_get_slice_count() accordingly. > > > > Cc: [email protected] > > Signed-off-by: Imre Deak <[email protected]> > > --- > > drivers/gpu/drm/i915/display/intel_dp.c | 18 +++++++++++++----- > > 1 file changed, 13 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c > > b/drivers/gpu/drm/i915/display/intel_dp.c > > index 0ec82fcbcf48e..6d232c15a0b5a 100644 > > --- a/drivers/gpu/drm/i915/display/intel_dp.c > > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > > @@ -1013,6 +1013,8 @@ u8 intel_dp_dsc_get_slice_count(const struct > > intel_connector *connector, > > int num_joined_pipes) > > { > > struct intel_display *display = to_intel_display(connector); > > + u32 sink_slice_count_mask = > > + drm_dp_dsc_sink_slice_count_mask(connector->dp.dsc_dpcd, false); > > u8 min_slice_count, i; > > int max_slice_width; > > int tp_rgb_yuv444; > > @@ -1084,9 +1086,9 @@ u8 intel_dp_dsc_get_slice_count(const struct > > intel_connector *connector, > > (!HAS_DSC_3ENGINES(display) || num_joined_pipes != 4)) > > continue; > > > > - if (test_slice_count > > > - drm_dp_dsc_sink_max_slice_count(connector->dp.dsc_dpcd, > > false)) > > - break; > > + if (!(drm_dp_dsc_slice_count_to_mask(test_slice_count) & > > + sink_slice_count_mask)) > > + continue; > > > > /* > > * Bigjoiner needs small joiner to be enabled. > > @@ -1103,8 +1105,14 @@ u8 intel_dp_dsc_get_slice_count(const struct > > intel_connector *connector, > > return test_slice_count; > > } > > > > - drm_dbg_kms(display->drm, "Unsupported Slice Count %d\n", > > - min_slice_count); > > + /* Print slice count 1,2,4,..24 if bit#0,1,3,..23 is set in the mask. */ > > + sink_slice_count_mask <<= 1; > > + drm_dbg_kms(display->drm, > > + "[CONNECTOR:%d:%s] Unsupported slice count (min: %d, sink > > supported: %*pbl)\n", > > + connector->base.base.id, connector->base.name, > > + min_slice_count, > > + (int)BITS_PER_TYPE(sink_slice_count_mask), > > &sink_slice_count_mask); > > + > > return 0; > > } > > > > I think this patch could be squashed into the previous one. IMHO it > makes it a bit easier to see how those functions defined in the > previous patch would be used.
The practice I follow is to keep the DRM core and driver changes in separate patches. At least one reason for that is that the DRM core patches may need to be applied to the DRM core trees separately. > But nevertheless: > > Reviewed-by: Luca Coelho <[email protected]> > > -- > Cheers, > Luca.
