On Fri, May 22, 2026 at 02:32:03PM +0200, Nicolas Frattaroli wrote: > In anticipation of userspace being able to explicitly select supported > sink formats, add handling of the YCBCR444 sink format. The AUTO path > does not choose this format, but with explicit format selection added to > the driver, it becomes a possibility. > > Check for both source and sink support of YCBCR444 in > intel_dp_sink_format_valid. > > Acked-by: Daniel Stone <[email protected]> > Signed-off-by: Nicolas Frattaroli <[email protected]> > --- > drivers/gpu/drm/i915/display/intel_dp.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c > b/drivers/gpu/drm/i915/display/intel_dp.c > index 1920d2f02666..143ed85224be 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -1344,6 +1344,20 @@ intel_dp_mode_valid_downstream(struct intel_connector > *connector, > 8, sink_format, true); > } > > +static bool > +intel_dp_can_ycbcr444(struct intel_dp *intel_dp) > +{ > + if (source_can_output(intel_dp, INTEL_OUTPUT_FORMAT_YCBCR444) && > + !drm_dp_is_branch(intel_dp->dpcd)) > + return true; > + > + if (source_can_output(intel_dp, INTEL_OUTPUT_FORMAT_RGB) && > + dfp_can_convert_from_rgb(intel_dp, INTEL_OUTPUT_FORMAT_YCBCR444))
IIRC my previous conclusion was that we don't want the dfp convert stuff here, at least initially. So this should just are about source_can_output(). > + return true; > + > + return false; > +} > + > static enum drm_mode_status > intel_dp_sink_format_valid(struct intel_connector *connector, > const struct drm_display_mode *mode, > @@ -1364,6 +1378,13 @@ intel_dp_sink_format_valid(struct intel_connector > *connector, > > return MODE_OK; Again, would prefer a cleanr 420->444->rgb order. > case INTEL_OUTPUT_FORMAT_RGB: > + return MODE_OK; > + case INTEL_OUTPUT_FORMAT_YCBCR444: > + if (!(info->color_formats & > BIT(DRM_OUTPUT_COLOR_FORMAT_YCBCR444))) > + return MODE_BAD; > + if (!intel_dp_can_ycbcr444(intel_dp)) > + return MODE_BAD; These two ifs are swapped when compared to the HDMI version for no good reason that I can see. And missing the has_hdmi_sink check here as well. > + > return MODE_OK; > default: > MISSING_CASE(sink_format); > > -- > 2.54.0 -- Ville Syrjälä Intel
