dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: Jani Nikula <jani.nikula@linux.intel.com>,
	Sebastian Wick <sebastian.wick@redhat.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	Emma Anholt <emma@anholt.net>, Jonathan Corbet <corbet@lwn.net>,
	linux-kernel@vger.kernel.org,
	Samuel Holland <samuel@sholland.org>,
	Sandy Huang <hjc@rock-chips.com>,
	Jernej Skrabec <jernej.skrabec@gmail.com>,
	linux-doc@vger.kernel.org, linux-rockchip@lists.infradead.org,
	Chen-Yu Tsai <wens@csie.org>,
	dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org,
	David Airlie <airlied@gmail.com>,
	linux-sunxi@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 08/44] drm/connector: hdmi: Add Broadcast RGB property
Date: Fri, 2 Feb 2024 18:35:06 +0200	[thread overview]
Message-ID: <Zb0ZujO9E_WH8Pm3@intel.com> (raw)
In-Reply-To: <c37e9225-3890-4f4d-b45c-919b907b184b@xs4all.nl>

On Fri, Feb 02, 2024 at 12:20:21PM +0100, Hans Verkuil wrote:
> On 02/02/2024 12:04, Jani Nikula wrote:
> > On Mon, 15 Jan 2024, Sebastian Wick <sebastian.wick@redhat.com> wrote:
> >> On Thu, Dec 07, 2023 at 04:49:31PM +0100, Maxime Ripard wrote:
> >>> The i915 driver has a property to force the RGB range of an HDMI output.
> >>> The vc4 driver then implemented the same property with the same
> >>> semantics. KWin has support for it, and a PR for mutter is also there to
> >>> support it.
> >>>
> >>> Both drivers implementing the same property with the same semantics,
> >>> plus the userspace having support for it, is proof enough that it's
> >>> pretty much a de-facto standard now and we can provide helpers for it.
> >>>
> >>> Let's plumb it into the newly created HDMI connector.
> >>>
> >>> Signed-off-by: Maxime Ripard <mripard@kernel.org>
> > 
> > [snip]
> > 
> >>> @@ -1655,6 +1678,26 @@ EXPORT_SYMBOL(drm_connector_attach_dp_subconnector_property);
> >>>  /**
> >>>   * DOC: HDMI connector properties
> >>>   *
> >>> + * Broadcast RGB
> >>> + *      Indicates the RGB Quantization Range (Full vs Limited) used.
> >>> + *      Infoframes will be generated according to that value.
> >>> + *
> >>> + *      The value of this property can be one of the following:
> >>> + *
> >>> + *      Automatic:
> >>> + *              RGB Range is selected automatically based on the mode
> >>> + *              according to the HDMI specifications.
> >>> + *
> >>> + *      Full:
> >>> + *              Full RGB Range is forced.
> >>> + *
> >>> + *      Limited 16:235:
> >>> + *              Limited RGB Range is forced. Unlike the name suggests,
> >>> + *              this works for any number of bits-per-component.
> >>> + *
> >>> + *      Drivers can set up this property by calling
> >>> + *      drm_connector_attach_broadcast_rgb_property().
> >>> + *
> >>
> >> This is a good time to document this in more detail. There might be two
> >> different things being affected:
> >>
> >> 1. The signalling (InfoFrame/SDP/...)
> >> 2. The color pipeline processing
> >>
> >> All values of Broadcast RGB always affect the color pipeline processing
> >> such that a full-range input to the CRTC is converted to either full- or
> >> limited-range, depending on what the monitor is supposed to accept.
> >>
> >> When automatic is selected, does that mean that there is no signalling,
> >> or that the signalling matches what the monitor is supposed to accept
> >> according to the spec? Also, is this really HDMI specific?
> > 
> > Automatic is based on the mode as described in the specs
> > below. Basically certain modes are expected to be broadcast range, and
> > others full range.
> > 
> > I don't remember why we don't use the full range if the display
> > indicates it supports selectable quantization range in Video
> > Capabilities Data Block. It's quite possible there are displays that
> > declare support but don't. Cc: Ville.
> 
> I have not seen such displays. Enabling RGB Selectable Quantization Range
> is something that a vendor has to do explicitly, so it is reasonable to
> expect that it works, otherwise there would be no point to that flag!
> 
> Transmitting full range if possible gives a better picture quality and
> so is recommended.
> 
> > 
> > - HDMI 1.4b section 6.6 Video Quantization Ranges
> > 
> > - HDMI 2.1 section 7.3 Video Quantization Ranges
> > 
> > - DP 2.1 (and earlier) section 5.1.1.1 Video Colorimetry
> > 
> > - CTA-861-H (and earlier) section 5.1 Default Encoding Parameters and
> >   section 6.4.3 Quantization Range
> 
> Note that CTA-861-H deprecated the use of Default Range in the AVI
> InfoFrame, instead the source should always signal limited or full range
> in the Q field.

Only because the QS=1 is now mandatory IIRC.
We do always set Q bit explicitly when QS==1.

But yeah, I guess we could always go for full range
by default when QS==1. Or maybe we even did that at
some point in the past and it broke some things?
Can't recall anymore.

Anyways, QS=1 being mandatory is a clear improvement
in CTA-861, but some other CTA-861 rule updates are
more or less pointless as you can't in general detect
which version of the spec the sink claims to implement.

Eg. we already had cases where following the new CTA-861-F
rules for the YQ bit when transmitting RGB broke some
displays. And we are now forced to use the presence of
HDMI 2.0+ capabilities as a heuristic to detect CTA-851-F+.
(see drm_hdmi_avi_infoframe_quant_range()). It's pretty
nasty.

And I think there is some other infoframe related issue
(something to do with VICs IIRC) where we'd need to derive
the CTA-861 version eg. from the set of advertised VICs
in the EDID. I might have even written some code for that
at some point but never finished it. So it's still
broken in the current code. Can't recall the specific
details right now unfortunately.

-- 
Ville Syrjälä
Intel

  reply	other threads:[~2024-02-02 16:35 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-07 15:49 [PATCH v5 00/44] drm/connector: Create HDMI Connector infrastructure Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 01/44] drm/tests: helpers: Include missing drm_drv header Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 02/44] drm/tests: helpers: Add atomic helpers Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 03/44] drm/tests: Add helper to create mock plane Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 04/44] drm/tests: Add helper to create mock crtc Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 05/44] drm/tests: connector: Add tests for drmm_connector_init Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 06/44] drm/connector: Introduce an HDMI connector initialization function Maxime Ripard
2023-12-14 14:39   ` Dave Stevenson
2023-12-07 15:49 ` [PATCH v5 07/44] drm/connector: hdmi: Create an HDMI sub-state Maxime Ripard
2023-12-14 14:40   ` Dave Stevenson
2023-12-07 15:49 ` [PATCH v5 08/44] drm/connector: hdmi: Add Broadcast RGB property Maxime Ripard
2023-12-14 14:43   ` Dave Stevenson
2024-01-12 13:59     ` Maxime Ripard
2024-01-12 15:59       ` Dave Stevenson
2024-01-15 14:33   ` Sebastian Wick
2024-01-15 14:37     ` Sebastian Wick
2024-01-15 15:30       ` Maxime Ripard
2024-02-02 13:01       ` Maxime Ripard
2024-02-02 15:40         ` Ville Syrjälä
2024-02-02 15:59           ` Maxime Ripard
2024-02-02 16:37             ` Ville Syrjälä
2024-02-05  9:39               ` Maxime Ripard
2024-02-09 20:34                 ` Sebastian Wick
2024-02-12 10:01                   ` Maxime Ripard
2024-02-12 15:49                     ` Ville Syrjälä
2024-02-12 16:39                       ` Hans Verkuil
2024-02-12 17:00                         ` Maxime Ripard
2024-02-12 16:53                       ` Re: Re: Re: " Maxime Ripard
2024-02-12 17:06                         ` Sebastian Wick
2024-02-15 11:00                           ` Maxime Ripard
2024-02-19 14:01                             ` Sebastian Wick
2024-02-22 10:54                               ` Maxime Ripard
2024-02-22 12:58                                 ` Ville Syrjälä
2024-02-22 13:12                                   ` Sebastian Wick
2024-02-22 13:20                                   ` Maxime Ripard
2024-02-13  8:38                         ` Re: Re: Re: Re: " Ville Syrjälä
2024-02-15 10:53                           ` Maxime Ripard
2024-02-15 15:09                             ` Ville Syrjälä
2024-01-15 15:25     ` Maxime Ripard
2024-01-18 21:21       ` Sebastian Wick
2024-02-02 11:04     ` Jani Nikula
2024-02-02 11:20       ` Hans Verkuil
2024-02-02 16:35         ` Ville Syrjälä [this message]
2024-02-02 15:49     ` Maxime Ripard
2024-02-09 20:30       ` Sebastian Wick
2024-02-12  9:55         ` Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 09/44] drm/connector: hdmi: Add RGB Quantization Range to the connector state Maxime Ripard
2023-12-14 14:46   ` Dave Stevenson
2023-12-07 15:49 ` [PATCH v5 10/44] drm/connector: hdmi: Add output BPC " Maxime Ripard
2023-12-14 14:48   ` Dave Stevenson
2023-12-07 15:49 ` [PATCH v5 11/44] drm/connector: hdmi: Add support for output format Maxime Ripard
2023-12-14 14:52   ` Dave Stevenson
2023-12-07 15:49 ` [PATCH v5 12/44] drm/connector: hdmi: Add HDMI compute clock helper Maxime Ripard
2023-12-14 15:02   ` Dave Stevenson
2023-12-07 15:49 ` [PATCH v5 13/44] drm/connector: hdmi: Calculate TMDS character rate Maxime Ripard
2023-12-14 15:04   ` Dave Stevenson
2023-12-07 15:49 ` [PATCH v5 14/44] drm/connector: hdmi: Add custom hook to filter " Maxime Ripard
2023-12-14 15:06   ` Dave Stevenson
2023-12-07 15:49 ` [PATCH v5 15/44] drm/connector: hdmi: Compute bpc and format automatically Maxime Ripard
2023-12-14 15:10   ` Dave Stevenson
2024-02-01 12:51     ` Maxime Ripard
2024-02-01 15:33       ` Dave Stevenson
2024-02-01 16:50         ` Maxime Ripard
2024-02-02 13:58           ` Jani Nikula
2023-12-07 15:49 ` [PATCH v5 16/44] drm/connector: hdmi: Add Infoframes generation Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 17/44] drm/connector: hdmi: Create Infoframe DebugFS entries Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 18/44] drm/vc4: hdmi: Create destroy state implementation Maxime Ripard
2023-12-12 11:40   ` Dave Stevenson
2023-12-14  8:48     ` Maxime Ripard
2023-12-13 15:22   ` (subset) " Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 19/44] drm/vc4: hdmi: Switch to HDMI connector Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 20/44] drm/vc4: tests: Remove vc4_dummy_plane structure Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 21/44] drm/vc4: tests: Convert to plane creation helper Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 22/44] drm/rockchip: inno_hdmi: Remove useless mode_fixup Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 23/44] drm/rockchip: inno_hdmi: Remove useless copy of drm_display_mode Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 24/44] drm/rockchip: inno_hdmi: Switch encoder hooks to atomic Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 25/44] drm/rockchip: inno_hdmi: Get rid of mode_set Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 26/44] drm/rockchip: inno_hdmi: no need to store vic Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 27/44] drm/rockchip: inno_hdmi: Remove unneeded has audio flag Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 28/44] drm/rockchip: inno_hdmi: Remove useless input format Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 29/44] drm/rockchip: inno_hdmi: Remove useless output format Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 30/44] drm/rockchip: inno_hdmi: Remove useless colorimetry Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 31/44] drm/rockchip: inno_hdmi: Remove useless enum Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 32/44] drm/rockchip: inno_hdmi: Remove tmds rate from structure Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 33/44] drm/rockchip: inno_hdmi: Remove useless coeff_csc matrix Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 34/44] drm/rockchip: inno_hdmi: Remove useless mode_valid Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 35/44] drm/rockchip: inno_hdmi: Drop HDMI Vendor Infoframe support Maxime Ripard
2023-12-07 15:49 ` [PATCH v5 36/44] drm/rockchip: inno_hdmi: Move infoframe disable to separate function Maxime Ripard
2023-12-07 15:50 ` [PATCH v5 37/44] drm/rockchip: inno_hdmi: Switch to infoframe type Maxime Ripard
2023-12-07 15:50 ` [PATCH v5 38/44] drm/rockchip: inno_hdmi: Remove unused drm device pointer Maxime Ripard
2023-12-07 15:50 ` [PATCH v5 39/44] drm/rockchip: inno_hdmi: Switch to HDMI connector Maxime Ripard
2023-12-07 15:50 ` [PATCH v5 40/44] drm/sun4i: hdmi: Convert encoder to atomic Maxime Ripard
2023-12-21 14:33   ` [v5,40/44] " Sui Jingfeng
2023-12-07 15:50 ` [PATCH v5 41/44] drm/sun4i: hdmi: Move mode_set into enable Maxime Ripard
2023-12-21 14:43   ` [v5,41/44] " Sui Jingfeng
2023-12-07 15:50 ` [PATCH v5 42/44] drm/sun4i: hdmi: Switch to container_of_const Maxime Ripard
2023-12-07 15:50 ` [PATCH v5 43/44] drm/sun4i: hdmi: Consolidate atomic_check and mode_valid Maxime Ripard
2023-12-21 14:53   ` [v5,43/44] " Sui Jingfeng
2023-12-07 15:50 ` [PATCH v5 44/44] drm/sun4i: hdmi: Switch to HDMI connector Maxime Ripard

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=Zb0ZujO9E_WH8Pm3@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=airlied@gmail.com \
    --cc=corbet@lwn.net \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=emma@anholt.net \
    --cc=hjc@rock-chips.com \
    --cc=hverkuil@xs4all.nl \
    --cc=jani.nikula@linux.intel.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=mripard@kernel.org \
    --cc=samuel@sholland.org \
    --cc=sebastian.wick@redhat.com \
    --cc=tzimmermann@suse.de \
    --cc=wens@csie.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;
as well as URLs for NNTP newsgroup(s).