From: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
To: Maxime Ripard <mripard@kernel.org>
Cc: "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>,
"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>,
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
Subject: Re: [PATCH v9 04/19] drm/display: hdmi-state-helper: Act on color format DRM property
Date: Mon, 02 Mar 2026 13:53:34 +0100 [thread overview]
Message-ID: <8648916.T7Z3S40VBb@workhorse> (raw)
In-Reply-To: <20260302-literate-shrew-of-health-ec19d2@houat>
On Monday, 2 March 2026 09:46:06 Central European Standard Time Maxime Ripard wrote:
> Hi,
>
> On Fri, Feb 27, 2026 at 08:20:09PM +0100, Nicolas Frattaroli wrote:
> > With the introduction of the "color format" DRM property, which allows
> > userspace to request a specific color format, the HDMI state helper
> > should implement this.
> >
> > Implement it by translating the requested drm_connector_color_format to
> > a drm_output_color_format enum value as per the logic HDMI should use
> > for this: Auto is translated to RGB, and a fallback to YUV420 is only
> > performed if the original color format was auto.
> >
> > Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
> > ---
> > drivers/gpu/drm/display/drm_hdmi_state_helper.c | 28 +++++++++++++++++++++++--
> > 1 file changed, 26 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
> > index 9f3b696aceeb..31c6d55fa995 100644
> > --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
> > +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
> > @@ -669,10 +669,34 @@ hdmi_compute_config(const struct drm_connector *connector,
> > unsigned int max_bpc = clamp_t(unsigned int,
> > conn_state->max_bpc,
> > 8, connector->max_bpc);
> > + enum drm_output_color_format fmt;
> > int ret;
> >
> > - ret = hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc,
> > - DRM_OUTPUT_COLOR_FORMAT_RGB444);
> > + switch (conn_state->color_format) {
> > + case DRM_CONNECTOR_COLOR_FORMAT_AUTO:
> > + case DRM_CONNECTOR_COLOR_FORMAT_RGB444:
> > + fmt = DRM_OUTPUT_COLOR_FORMAT_RGB444;
> > + break;
> > + case DRM_CONNECTOR_COLOR_FORMAT_YCBCR444:
> > + fmt = DRM_OUTPUT_COLOR_FORMAT_YCBCR444;
> > + break;
> > + case DRM_CONNECTOR_COLOR_FORMAT_YCBCR422:
> > + fmt = DRM_OUTPUT_COLOR_FORMAT_YCBCR422;
> > + break;
> > + case DRM_CONNECTOR_COLOR_FORMAT_YCBCR420:
> > + fmt = DRM_OUTPUT_COLOR_FORMAT_YCBCR420;
> > + break;
> > + default:
> > + drm_dbg_kms(connector->dev, "HDMI does not support color format '%d'.\n",
> > + conn_state->color_format);
> > + return -EINVAL;
> > + }
> > +
> > + ret = hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc, fmt);
> > +
> > + if (conn_state->color_format != DRM_CONNECTOR_COLOR_FORMAT_AUTO)
> > + return ret;
> > +
>
> We discussed it before, and it wasn't as trivial as it should have been,
> but now, I really feel something like the following would be simpler:
>
> if (conn_state->color_format != DRM_CONNECTOR_COLOR_FORMAT_AUTO) {
> enum drm_output_color_format fmt;
>
> switch (conn_state->color_format) {
> case DRM_CONNECTOR_COLOR_FORMAT_AUTO:
> drm_warn(connector->dev, "The format shouldn't be auto here"); // or any better message
> fallthrough;
Why shouldn't it be auto there? This is the function where the auto->rgb
mapping is explicitly handled.
> case DRM_CONNECTOR_COLOR_FORMAT_RGB444:
> fmt = DRM_OUTPUT_COLOR_FORMAT_RGB444;
> break;
> ....
> }
>
> return hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc, fmt);
> }
>
> ret = hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc,
> DRM_OUTPUT_COLOR_FORMAT_RGB444);
>
> It makes it much clearer what the two branches are, and we don't have to
> test for auto multiple times.
Testing for auto multiple times is done for the "4:2:0 fallback on
AUTO only" case. If you fall through from AUTO to RGB and then return
the result of hdmi_compute_format_bpc on RGB, then you will not let
AUTO fall back to 4:2:0. hdmi_compute_format_bpc only does a fallback
for lower bit depths, not different color formats.
As far as I can tell, you're requesting a change of behaviour here that
would require me to adjust the behaviour of every single other HDMI
implementation and modify all the tests that you already gave a reviewed-by,
so I assume this wasn't the intent?
Kind regards,
Nicolas Frattaroli
>
> Maxime
>
WARNING: multiple messages have this Message-ID (diff)
From: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
To: Maxime Ripard <mripard@kernel.org>
Cc: "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>,
"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>,
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
Subject: Re: [PATCH v9 04/19] drm/display: hdmi-state-helper: Act on color format DRM property
Date: Mon, 02 Mar 2026 13:53:34 +0100 [thread overview]
Message-ID: <8648916.T7Z3S40VBb@workhorse> (raw)
In-Reply-To: <20260302-literate-shrew-of-health-ec19d2@houat>
On Monday, 2 March 2026 09:46:06 Central European Standard Time Maxime Ripard wrote:
> Hi,
>
> On Fri, Feb 27, 2026 at 08:20:09PM +0100, Nicolas Frattaroli wrote:
> > With the introduction of the "color format" DRM property, which allows
> > userspace to request a specific color format, the HDMI state helper
> > should implement this.
> >
> > Implement it by translating the requested drm_connector_color_format to
> > a drm_output_color_format enum value as per the logic HDMI should use
> > for this: Auto is translated to RGB, and a fallback to YUV420 is only
> > performed if the original color format was auto.
> >
> > Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
> > ---
> > drivers/gpu/drm/display/drm_hdmi_state_helper.c | 28 +++++++++++++++++++++++--
> > 1 file changed, 26 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
> > index 9f3b696aceeb..31c6d55fa995 100644
> > --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
> > +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
> > @@ -669,10 +669,34 @@ hdmi_compute_config(const struct drm_connector *connector,
> > unsigned int max_bpc = clamp_t(unsigned int,
> > conn_state->max_bpc,
> > 8, connector->max_bpc);
> > + enum drm_output_color_format fmt;
> > int ret;
> >
> > - ret = hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc,
> > - DRM_OUTPUT_COLOR_FORMAT_RGB444);
> > + switch (conn_state->color_format) {
> > + case DRM_CONNECTOR_COLOR_FORMAT_AUTO:
> > + case DRM_CONNECTOR_COLOR_FORMAT_RGB444:
> > + fmt = DRM_OUTPUT_COLOR_FORMAT_RGB444;
> > + break;
> > + case DRM_CONNECTOR_COLOR_FORMAT_YCBCR444:
> > + fmt = DRM_OUTPUT_COLOR_FORMAT_YCBCR444;
> > + break;
> > + case DRM_CONNECTOR_COLOR_FORMAT_YCBCR422:
> > + fmt = DRM_OUTPUT_COLOR_FORMAT_YCBCR422;
> > + break;
> > + case DRM_CONNECTOR_COLOR_FORMAT_YCBCR420:
> > + fmt = DRM_OUTPUT_COLOR_FORMAT_YCBCR420;
> > + break;
> > + default:
> > + drm_dbg_kms(connector->dev, "HDMI does not support color format '%d'.\n",
> > + conn_state->color_format);
> > + return -EINVAL;
> > + }
> > +
> > + ret = hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc, fmt);
> > +
> > + if (conn_state->color_format != DRM_CONNECTOR_COLOR_FORMAT_AUTO)
> > + return ret;
> > +
>
> We discussed it before, and it wasn't as trivial as it should have been,
> but now, I really feel something like the following would be simpler:
>
> if (conn_state->color_format != DRM_CONNECTOR_COLOR_FORMAT_AUTO) {
> enum drm_output_color_format fmt;
>
> switch (conn_state->color_format) {
> case DRM_CONNECTOR_COLOR_FORMAT_AUTO:
> drm_warn(connector->dev, "The format shouldn't be auto here"); // or any better message
> fallthrough;
Why shouldn't it be auto there? This is the function where the auto->rgb
mapping is explicitly handled.
> case DRM_CONNECTOR_COLOR_FORMAT_RGB444:
> fmt = DRM_OUTPUT_COLOR_FORMAT_RGB444;
> break;
> ....
> }
>
> return hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc, fmt);
> }
>
> ret = hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc,
> DRM_OUTPUT_COLOR_FORMAT_RGB444);
>
> It makes it much clearer what the two branches are, and we don't have to
> test for auto multiple times.
Testing for auto multiple times is done for the "4:2:0 fallback on
AUTO only" case. If you fall through from AUTO to RGB and then return
the result of hdmi_compute_format_bpc on RGB, then you will not let
AUTO fall back to 4:2:0. hdmi_compute_format_bpc only does a fallback
for lower bit depths, not different color formats.
As far as I can tell, you're requesting a change of behaviour here that
would require me to adjust the behaviour of every single other HDMI
implementation and modify all the tests that you already gave a reviewed-by,
so I assume this wasn't the intent?
Kind regards,
Nicolas Frattaroli
>
> Maxime
>
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2026-03-02 13:48 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-27 19:20 [PATCH v9 00/19] Add new general DRM property "color format" Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 01/19] drm/amd/display: Remove unnecessary SIGNAL_TYPE_HDMI_TYPE_A check Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 02/19] drm: Add new general DRM property "color format" Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-03-01 16:47 ` Dmitry Baryshkov
2026-03-01 16:47 ` Dmitry Baryshkov
2026-03-02 12:35 ` Nicolas Frattaroli
2026-03-02 12:35 ` Nicolas Frattaroli
2026-03-02 15:07 ` Andri Yngvason
2026-03-02 15:07 ` Andri Yngvason
2026-03-05 9:28 ` Maxime Ripard
2026-03-05 9:28 ` Maxime Ripard
2026-03-05 10:07 ` Nicolas Frattaroli
2026-03-05 10:07 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 03/19] drm/bridge: Act on the DRM color format property Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-03-01 16:56 ` Dmitry Baryshkov
2026-03-01 16:56 ` Dmitry Baryshkov
2026-03-02 12:45 ` Nicolas Frattaroli
2026-03-02 12:45 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 04/19] drm/display: hdmi-state-helper: Act on color format DRM property Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-03-01 16:56 ` Dmitry Baryshkov
2026-03-01 16:56 ` Dmitry Baryshkov
2026-03-02 8:46 ` Maxime Ripard
2026-03-02 8:46 ` Maxime Ripard
2026-03-02 12:53 ` Nicolas Frattaroli [this message]
2026-03-02 12:53 ` Nicolas Frattaroli
2026-03-05 9:32 ` Maxime Ripard
2026-03-05 9:32 ` Maxime Ripard
2026-02-27 19:20 ` [PATCH v9 05/19] drm/display: hdmi-state-helper: Try subsampling in mode_valid Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-03-01 16:49 ` Dmitry Baryshkov
2026-03-01 16:49 ` Dmitry Baryshkov
2026-02-27 19:20 ` [PATCH v9 06/19] drm/i915: Implement the "color format" DRM property Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 07/19] drm/amdgpu: Implement " Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 08/19] drm/rockchip: Add YUV422 output mode constants for VOP2 Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 09/19] drm/rockchip: vop2: Add RK3576 to the RG swap special case Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 10/19] drm/rockchip: vop2: Recognise 10-bit YUV422 as YUV format Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 11/19] drm/rockchip: vop2: Set correct output format for RK3576 YUV422 Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 12/19] drm/bridge: dw-hdmi-qp: Implement atomic_get_output_bus_fmts Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-03-01 16:42 ` Dmitry Baryshkov
2026-03-01 16:42 ` Dmitry Baryshkov
2026-02-27 19:20 ` [PATCH v9 13/19] drm/rockchip: dw_hdmi_qp: Implement "color format" DRM property Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 14/19] drm/rockchip: dw_hdmi_qp: Set supported_formats platdata Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 15/19] drm/connector: Register color format property on HDMI connectors Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-03-01 16:58 ` Dmitry Baryshkov
2026-03-01 16:58 ` Dmitry Baryshkov
2026-02-27 19:20 ` [PATCH v9 16/19] drm/tests: hdmi: Add tests for the color_format property Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 17/19] drm/tests: hdmi: Add tests for HDMI helper's mode_valid Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 18/19] drm/tests: bridge: Add KUnit tests for bridge chain format selection Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 19:20 ` [PATCH v9 19/19] drm/bridge: Document " Nicolas Frattaroli
2026-02-27 19:20 ` Nicolas Frattaroli
2026-02-27 20:03 ` ✗ Fi.CI.BUILD: failure for Add new general DRM property "color format" (rev6) Patchwork
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=8648916.T7Z3S40VBb@workhorse \
--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 \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.