From: Jani Nikula <jani.nikula@linux.intel.com>
To: ville.syrjala@linux.intel.com, dri-devel@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 4/5] drm/edid: Set AVI infoframe Q even when QS=0
Date: Thu, 12 Jan 2017 11:45:11 +0200 [thread overview]
Message-ID: <87wpe0628o.fsf@intel.com> (raw)
In-Reply-To: <20170111125725.8086-5-ville.syrjala@linux.intel.com>
On Wed, 11 Jan 2017, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> HDMI 2.0 recommends that we set the Q bits in the AVI infoframe
> even when the sink does not support quantization range selection (QS=0).
> According to CEA-861 we can do that as long as the Q we send matches
> the default quantization range for the mode.
>
> Previosuly I think I had misread the spec as saying that you can't
^^^^^^^^^^
> send a non-zero Q at all when QS=0. But that's not what the spec
> actually says.
Agreed.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/drm_edid.c | 8 +++++++-
> drivers/gpu/drm/i915/intel_hdmi.c | 6 ++++--
> drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +-
> include/drm/drm_edid.h | 1 +
> 4 files changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 548c20250b95..caa2435bac31 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -4295,11 +4295,13 @@ EXPORT_SYMBOL(drm_hdmi_avi_infoframe_from_display_mode);
> * drm_hdmi_avi_infoframe_quant_range() - fill the HDMI AVI infoframe
> * quantization range information
> * @frame: HDMI AVI infoframe
> + * @mode: DRM display mode
> * @rgb_quant_range: RGB quantization range (Q)
> * @rgb_quant_range_selectable: Sink support selectable RGB quantization range (QS)
> */
> void
> drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe *frame,
> + const struct drm_display_mode *mode,
> enum hdmi_quantization_range rgb_quant_range,
> bool rgb_quant_range_selectable)
> {
> @@ -4309,8 +4311,12 @@ drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe *frame,
> * to the default RGB Quantization Range for the transmitted Picture
> * unless the Sink indicates support for the Q bit in a Video
> * Capabilities Data Block."
> + *
> + * HDMI 2.0 recommends sending non-zero Q when it does match the
> + * default RGB quantization range for the mode, even when QS=0.
> */
> - if (rgb_quant_range_selectable)
> + if (rgb_quant_range_selectable ||
> + rgb_quant_range == drm_default_rgb_quant_range(mode))
> frame->quantization_range = rgb_quant_range;
> else
> frame->quantization_range = HDMI_QUANTIZATION_RANGE_DEFAULT;
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index 351f837b09a0..af16b0fa6b69 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -455,17 +455,19 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
> const struct intel_crtc_state *crtc_state)
> {
> struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
> + const struct drm_display_mode *adjusted_mode =
> + &crtc_state->base.adjusted_mode;
> union hdmi_infoframe frame;
> int ret;
>
> ret = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi,
> - &crtc_state->base.adjusted_mode);
> + adjusted_mode);
> if (ret < 0) {
> DRM_ERROR("couldn't fill AVI infoframe\n");
> return;
> }
>
> - drm_hdmi_avi_infoframe_quant_range(&frame.avi,
> + drm_hdmi_avi_infoframe_quant_range(&frame.avi, adjusted_mode,
> crtc_state->limited_color_range ?
> HDMI_QUANTIZATION_RANGE_LIMITED :
> HDMI_QUANTIZATION_RANGE_FULL,
> diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
> index a588156b5410..f38fdbac2878 100644
> --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
> +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
> @@ -356,7 +356,7 @@ static void vc4_hdmi_set_avi_infoframe(struct drm_encoder *encoder)
> return;
> }
>
> - drm_hdmi_avi_infoframe_quant_range(&frame.avi,
> + drm_hdmi_avi_infoframe_quant_range(&frame.avi, mode,
> vc4_encoder->limited_rgb_range ?
> HDMI_QUANTIZATION_RANGE_LIMITED :
> HDMI_QUANTIZATION_RANGE_FULL,
> diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h
> index cfad4d89589f..43fb0ac5eb9c 100644
> --- a/include/drm/drm_edid.h
> +++ b/include/drm/drm_edid.h
> @@ -347,6 +347,7 @@ drm_hdmi_vendor_infoframe_from_display_mode(struct hdmi_vendor_infoframe *frame,
> const struct drm_display_mode *mode);
> void
> drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe *frame,
> + const struct drm_display_mode *mode,
> enum hdmi_quantization_range rgb_quant_range,
> bool rgb_quant_range_selectable);
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2017-01-12 9:45 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-11 12:57 [PATCH 0/5] drm/edid: Improve RGB limited range handling a bit ville.syrjala
2017-01-11 12:57 ` [PATCH 1/5] drm/edid: Have drm_edid.h include hdmi.h ville.syrjala
2017-01-12 9:22 ` Jani Nikula
2017-01-11 12:57 ` [PATCH 2/5] drm/edid: Introduce drm_default_rgb_quant_range() ville.syrjala
2017-01-11 14:18 ` [PATCH v2 " ville.syrjala
2017-01-12 9:29 ` Jani Nikula
2017-01-12 14:24 ` [Intel-gfx] " Ville Syrjälä
2017-01-11 16:16 ` [PATCH " Daniel Vetter
2017-01-11 16:31 ` Ville Syrjälä
2017-01-12 8:00 ` Daniel Vetter
2017-01-12 8:13 ` Michel Dänzer
2017-01-20 19:50 ` Eric Anholt
2017-01-20 20:00 ` Ville Syrjälä
2017-01-20 20:37 ` [Intel-gfx] " Ville Syrjälä
2017-01-11 12:57 ` [PATCH 3/5] drm/edid: Introduce drm_hdmi_avi_infoframe_quant_range() ville.syrjala
2017-01-12 9:37 ` Jani Nikula
2017-01-11 12:57 ` [PATCH 4/5] drm/edid: Set AVI infoframe Q even when QS=0 ville.syrjala
2017-01-12 9:45 ` Jani Nikula [this message]
2017-01-11 12:57 ` [PATCH 5/5] drm/edid: Set YQ bits in the AVI infoframe according to CEA-861-F ville.syrjala
2017-01-12 10:13 ` Jani Nikula
2017-01-12 10:35 ` Ville Syrjälä
2017-01-12 11:13 ` Jani Nikula
2017-01-11 13:53 ` ✓ Fi.CI.BAT: success for drm/edid: Improve RGB limited range handling a bit Patchwork
2017-01-11 18:53 ` ✓ Fi.CI.BAT: success for drm/edid: Improve RGB limited range handling a bit (rev2) Patchwork
2017-01-26 19:08 ` [PATCH 0/5] drm/edid: Improve RGB limited range handling a bit Ville Syrjälä
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=87wpe0628o.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=ville.syrjala@linux.intel.com \
/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).