[PATCH v11 03/22] drm: Add new general DRM property "color format"

Ville Syrjälä ville.syrjala at linux.intel.com
Tue Mar 24 12:53:35 PDT 2026


On Tue, Mar 24, 2026 at 08:10:11PM +0100, Nicolas Frattaroli wrote:
> On Tuesday, 24 March 2026 18:00:45 Central European Standard Time Ville Syrjälä wrote:
> > On Tue, Mar 24, 2026 at 05:01:07PM +0100, Nicolas Frattaroli wrote:
> > > +enum drm_connector_color_format {
> > > +	/**
> > > +	 * @DRM_CONNECTOR_COLOR_FORMAT_AUTO: The driver or display protocol
> > > +	 * helpers should pick a suitable color format. All implementations of a
> > > +	 * specific display protocol must behave the same way with "AUTO", but
> > > +	 * different display protocols do not necessarily have the same "AUTO"
> > > +	 * semantics.
> > > +	 *
> > > +	 * For HDMI, "AUTO" picks RGB, but falls back to YCbCr 4:2:0 if the
> > > +	 * bandwidth required for full-scale RGB is not available, or the mode
> > > +	 * is YCbCr 4:2:0-only, as long as the mode and output both support
> > > +	 * YCbCr 4:2:0.
> > > +	 *
> > > +	 * For display protocols other than HDMI, the recursive bridge chain
> > > +	 * format selection picks the first chain of bridge formats that works,
> > > +	 * as has already been the case before the introduction of the "color
> > > +	 * format" property. Non-HDMI bridges should therefore either sort their
> > > +	 * bus output formats by preference, or agree on a unified auto format
> > > +	 * selection logic that's implemented in a common state helper (like
> > > +	 * how HDMI does it).
> > > +	 */
> > > +	DRM_CONNECTOR_COLOR_FORMAT_AUTO = 0,
> > > +
> > > +	/**
> > > +	 * @DRM_CONNECTOR_COLOR_FORMAT_RGB444: RGB output format
> > > +	 */
> > > +	DRM_CONNECTOR_COLOR_FORMAT_RGB444,
> > > +
> > > +	/**
> > > +	 * @DRM_CONNECTOR_COLOR_FORMAT_YCBCR444: YCbCr 4:4:4 output format (ie.
> > > +	 * not subsampled)
> > > +	 */
> > > +	DRM_CONNECTOR_COLOR_FORMAT_YCBCR444,
> > > +
> > > +	/**
> > > +	 * @DRM_CONNECTOR_COLOR_FORMAT_YCBCR422: YCbCr 4:2:2 output format (ie.
> > > +	 * with horizontal subsampling)
> > > +	 */
> > > +	DRM_CONNECTOR_COLOR_FORMAT_YCBCR422,
> > > +
> > > +	/**
> > > +	 * @DRM_CONNECTOR_COLOR_FORMAT_YCBCR420: YCbCr 4:2:0 output format (ie.
> > > +	 * with horizontal and vertical subsampling)
> > > +	 */
> > > +	DRM_CONNECTOR_COLOR_FORMAT_YCBCR420,
> > 
> > Seems like this should document what the quantization range
> > should be for each format.
> > 
> 
> I don't think so? If you want per-component bit depth values,
> DRM_FORMAT_* defines would be the appropriate values to use. This
> enum is more abstract than that, and is there to communicate
> YUV vs. RGB and chroma subsampling, with bit depth being handled
> by other properties.
> 
> If you mean the factor used for subsampling, then that'd only be
> relevant if YCBCR410 was supported where one chroma plane isn't
> halved but quartered in resolution. I suspect 4:1:0 will never
> be added; no digital display protocol standard supports it to my
> knowledge, and hopefully none ever will.

No, I mean the quantization range (16-235 vs. 0-255 etc).

The i915 behaviour is that YCbCr is always limited range,
RGB can either be full or limited range depending on the 
"Broadcast RGB" property and other related factors.

-- 
Ville Syrjälä
Intel



More information about the Linux-rockchip mailing list