From: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
To: "Harry Wentland" <harry.wentland@amd.com>,
"Leo Li" <sunpeng.li@amd.com>,
"Rodrigo Siqueira" <siqueira@igalia.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"Andrzej Hajda" <andrzej.hajda@intel.com>,
"Neil Armstrong" <neil.armstrong@linaro.org>,
"Robert Foss" <rfoss@kernel.org>,
"Laurent Pinchart" <Laurent.pinchart@ideasonboard.com>,
"Jonas Karlman" <jonas@kwiboo.se>,
"Jernej Skrabec" <jernej.skrabec@gmail.com>,
"Sandy Huang" <hjc@rock-chips.com>,
"Heiko Stübner" <heiko@sntech.de>,
"Andy Yan" <andy.yan@rock-chips.com>,
"Jani Nikula" <jani.nikula@linux.intel.com>,
"Rodrigo Vivi" <rodrigo.vivi@intel.com>,
"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
"Tvrtko Ursulin" <tursulin@ursulin.net>,
"Dmitry Baryshkov" <lumag@kernel.org>,
"Sascha Hauer" <s.hauer@pengutronix.de>,
"Rob Herring" <robh@kernel.org>,
"Jonathan Corbet" <corbet@lwn.net>,
"Shuah Khan" <skhan@linuxfoundation.org>
Cc: kernel@collabora.com, amd-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org,
Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Subject: [PATCH v14 27/28] drm/bridge: Document bridge chain format selection
Date: Thu, 23 Apr 2026 21:03:50 +0200 [thread overview]
Message-ID: <20260423-color-format-v14-27-449a419ccbd4@collabora.com> (raw)
In-Reply-To: <20260423-color-format-v14-0-449a419ccbd4@collabora.com>
The bridge chain format selection behaviour was, until now,
undocumented. With the addition of the "color format" DRM property, it's
not sufficiently complex enough that documentation is warranted,
especially for driver authors trying to do the right thing.
Add a high-level overview of how the process is supposed to work, and
mention what the display driver is supposed to do if it wants to make
use of this functionality.
Reviewed-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
---
Documentation/gpu/drm-kms-helpers.rst | 6 ++++++
drivers/gpu/drm/drm_bridge.c | 40 +++++++++++++++++++++++++++++++++++
2 files changed, 46 insertions(+)
diff --git a/Documentation/gpu/drm-kms-helpers.rst b/Documentation/gpu/drm-kms-helpers.rst
index b4a9e5ae81f6..bf5a9d909cf3 100644
--- a/Documentation/gpu/drm-kms-helpers.rst
+++ b/Documentation/gpu/drm-kms-helpers.rst
@@ -169,6 +169,12 @@ Bridge Operations
.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
:doc: bridge operations
+Bridge Chain Format Selection
+-----------------------------
+
+.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
+ :doc: bridge chain format selection
+
Bridge Connector Helper
-----------------------
diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
index 3843d45a82cb..8ddac8424163 100644
--- a/drivers/gpu/drm/drm_bridge.c
+++ b/drivers/gpu/drm/drm_bridge.c
@@ -198,6 +198,46 @@
* driver.
*/
+/**
+ * DOC: bridge chain format selection
+ *
+ * A bridge chain, from display output processor to connector, may contain
+ * bridges capable of converting between bus formats on their inputs, and
+ * output formats on their outputs. For example, a bridge may be able to convert
+ * from RGB to YCbCr 4:4:4, and pass through YCbCr 4:2:0 as-is, but not convert
+ * from RGB to YCbCr 4:2:0. This means not all input formats map to all output
+ * formats.
+ *
+ * Further adding to this, a desired output color format, as specified with the
+ * "color format" DRM property, might not correspond 1:1 to what the display
+ * driver should set at its output. The bridge chain it feeds into may only be
+ * able to reach the desired output format, if a conversion from a different
+ * starting format is performed.
+ *
+ * To deal with this complexity, the recursive bridge chain bus format selection
+ * logic starts with the last bridge in the chain, usually the connector, and
+ * then recursively walks the chain of bridges backwards to the first bridge,
+ * trying to find a path.
+ *
+ * For a display driver to work in such a scenario, it should read the first
+ * bridge's bridge state to figure out which bus format the chain resolved to.
+ * If the first bridge's input format resolved to %MEDIA_BUS_FMT_FIXED, then its
+ * output format should be used.
+ *
+ * Special handling is done for HDMI as it relates to format selection. Instead
+ * of directly using the "color format" DRM property for bridge chains that end
+ * in HDMI bridges, the bridge chain format selection logic will trust the logic
+ * that set the HDMI output format. For the common HDMI state helper
+ * functionality, this means that %DRM_CONNECTOR_COLOR_FORMAT_AUTO will allow
+ * fallbacks to YCBCr 4:2:0 if the bandwidth requirements would otherwise be too
+ * high but the mode and connector allow it.
+ *
+ * For bridge chains that do not end in an HDMI bridge,
+ * %DRM_CONNECTOR_COLOR_FORMAT_AUTO will be satisfied with the first output
+ * format on the last bridge for which it can find a path back to the first
+ * bridge.
+ */
+
/* Protect bridge_list and bridge_lingering_list */
static DEFINE_MUTEX(bridge_lock);
static LIST_HEAD(bridge_list);
--
2.53.0
next prev parent reply other threads:[~2026-04-23 19:08 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-23 19:03 [PATCH v14 00/28] Add new general DRM property "color format" Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 01/28] drm/amd/display: Remove unnecessary SIGNAL_TYPE_HDMI_TYPE_A check Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 02/28] drm/display: hdmi-state-helper: Use default case for unsupported formats Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 03/28] drm: Add new general DRM property "color format" Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 04/28] drm/connector: Let connectors have a say in their color format Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 05/28] drm/display: bridge_connector: Use HDMI color format for HDMI conns Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 06/28] drm/bridge: Act on the DRM color format property Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 07/28] drm/atomic-helper: Add HDMI bridge output bus formats helper Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 08/28] drm/display: hdmi-state-helper: Act on color format DRM property Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 09/28] drm/display: hdmi-state-helper: Try subsampling in mode_valid Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 10/28] drm/amdgpu: Implement "color format" DRM property Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 11/28] drm/i915/hdmi: Add YCBCR444 handling for sink formats Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 12/28] drm/i915/dp: " Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 13/28] drm/i915/hdmi: Implement "color format" DRM property Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 14/28] drm/i915/dp: " Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 15/28] drm/rockchip: Add YUV422 output mode constants for VOP2 Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 16/28] drm/rockchip: vop2: Add RK3576 to the RG swap special case Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 17/28] drm/rockchip: vop2: Recognise 10-bit YUV422 as YUV format Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 18/28] drm/rockchip: vop2: Set correct output format for RK3576 YUV422 Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 19/28] drm/bridge: dw-hdmi-qp: Use common HDMI output bus fmts helper Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 20/28] drm/rockchip: dw_hdmi_qp: Implement "color format" DRM property Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 21/28] drm/rockchip: dw_hdmi_qp: Set supported_formats platdata Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 22/28] drm/connector: Register color format property on HDMI connectors Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 23/28] drm/tests: hdmi: Add tests for the color_format property Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 24/28] drm/tests: hdmi: Add tests for HDMI helper's mode_valid Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 25/28] drm/tests: bridge: Add KUnit tests for bridge chain format selection Nicolas Frattaroli
2026-04-23 19:03 ` [PATCH v14 26/28] drm/tests: bridge: Add test for HDMI output bus formats helper Nicolas Frattaroli
2026-04-23 19:03 ` Nicolas Frattaroli [this message]
2026-04-23 19:03 ` [PATCH v14 28/28] drm/connector: Update docs of "colorspace" for color format prop Nicolas Frattaroli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260423-color-format-v14-27-449a419ccbd4@collabora.com \
--to=nicolas.frattaroli@collabora.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=andrzej.hajda@intel.com \
--cc=andy.yan@rock-chips.com \
--cc=christian.koenig@amd.com \
--cc=corbet@lwn.net \
--cc=dri-devel@lists.freedesktop.org \
--cc=harry.wentland@amd.com \
--cc=heiko@sntech.de \
--cc=hjc@rock-chips.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=joonas.lahtinen@linux.intel.com \
--cc=kernel@collabora.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=lumag@kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=rfoss@kernel.org \
--cc=robh@kernel.org \
--cc=rodrigo.vivi@intel.com \
--cc=s.hauer@pengutronix.de \
--cc=simona@ffwll.ch \
--cc=siqueira@igalia.com \
--cc=skhan@linuxfoundation.org \
--cc=sunpeng.li@amd.com \
--cc=tursulin@ursulin.net \
--cc=tzimmermann@suse.de \
--cc=wayland-devel@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox