Message ID | 20201126081445.29759-8-uma.shankar@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Enable HDR on MCA LSPCON based Gen9 devices | expand |
On Thu, Nov 26, 2020 at 01:44:39PM +0530, Uma Shankar wrote: > Enable Colorspace as BT2020 if driving HDR content.Sending Colorimetry > data for HDR using AVI infoframe. LSPCON firmware expects this and though > SOC drives DP, for HDMI panel AVI infoframe is sent to the LSPCON device > which transfers the same to HDMI sink. > > v2: Dropped state managed in drm core as per Jani Nikula's suggestion. > > v3: Aligned colorimetry handling for lspcon as per compute_avi_infoframes, > as suggested by Ville. > > v4: Added BT2020 as default for HDR. Adding the colorspace property > interface for pcon will be take up separately. Moved changes of > quantization in a separate patch as per Ville's comments. > > Signed-off-by: Uma Shankar <uma.shankar@intel.com> > --- > drivers/gpu/drm/i915/display/intel_lspcon.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_lspcon.c b/drivers/gpu/drm/i915/display/intel_lspcon.c > index 0a4c05d67108..f6f58a991e7a 100644 > --- a/drivers/gpu/drm/i915/display/intel_lspcon.c > +++ b/drivers/gpu/drm/i915/display/intel_lspcon.c > @@ -481,6 +481,10 @@ void lspcon_read_infoframe(struct intel_encoder *encoder, > /* FIXME implement this */ > } > > +/* HDMI HDR Colorspace Spec Definitions */ > +#define NORMAL_COLORIMETRY_MASK 0x3 > +#define EXTENDED_COLORIMETRY_MASK 0x7 > +#define HDMI_COLORIMETRY_BT2020_YCC ((3 << 0) | (6 << 2) | (0 << 5)) > void lspcon_set_infoframes(struct intel_encoder *encoder, > bool enable, > const struct intel_crtc_state *crtc_state, > @@ -523,6 +527,20 @@ void lspcon_set_infoframes(struct intel_encoder *encoder, > else > frame.avi.colorspace = HDMI_COLORSPACE_RGB; > > + /* > + * Set BT2020 colorspace if driving HDR data > + * ToDo: Make this generic and expose all colorspaces for > + * lspcon. We need to expose HDMI colorspaces when we detect > + * lspcon, this has to happen after connector is registered, > + * so need to fix this appropriately > + */ > + if (lspcon->active && conn_state->hdr_output_metadata) { > + frame.avi.colorimetry = HDMI_COLORIMETRY_BT2020_YCC & > + NORMAL_COLORIMETRY_MASK; > + frame.avi.extended_colorimetry = (HDMI_COLORIMETRY_BT2020_YCC >> 2) & > + EXTENDED_COLORIMETRY_MASK; > + } > + I don't understand the point of dancing around this instead of just fixing it. There, I did half the work for you https://patchwork.freedesktop.org/series/84309/ > /* nonsense combination */ > drm_WARN_ON(encoder->base.dev, crtc_state->limited_color_range && > crtc_state->output_format != INTEL_OUTPUT_FORMAT_RGB); > -- > 2.26.2
> -----Original Message----- > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > Sent: Thursday, November 26, 2020 10:43 PM > To: Shankar, Uma <uma.shankar@intel.com> > Cc: intel-gfx@lists.freedesktop.org > Subject: Re: [v11 07/13] i915/display: Enable BT2020 for HDR on LSPCON devices > > On Thu, Nov 26, 2020 at 01:44:39PM +0530, Uma Shankar wrote: > > Enable Colorspace as BT2020 if driving HDR content.Sending Colorimetry > > data for HDR using AVI infoframe. LSPCON firmware expects this and > > though SOC drives DP, for HDMI panel AVI infoframe is sent to the > > LSPCON device which transfers the same to HDMI sink. > > > > v2: Dropped state managed in drm core as per Jani Nikula's suggestion. > > > > v3: Aligned colorimetry handling for lspcon as per > > compute_avi_infoframes, as suggested by Ville. > > > > v4: Added BT2020 as default for HDR. Adding the colorspace property > > interface for pcon will be take up separately. Moved changes of > > quantization in a separate patch as per Ville's comments. > > > > Signed-off-by: Uma Shankar <uma.shankar@intel.com> > > --- > > drivers/gpu/drm/i915/display/intel_lspcon.c | 18 ++++++++++++++++++ > > 1 file changed, 18 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_lspcon.c > > b/drivers/gpu/drm/i915/display/intel_lspcon.c > > index 0a4c05d67108..f6f58a991e7a 100644 > > --- a/drivers/gpu/drm/i915/display/intel_lspcon.c > > +++ b/drivers/gpu/drm/i915/display/intel_lspcon.c > > @@ -481,6 +481,10 @@ void lspcon_read_infoframe(struct intel_encoder > *encoder, > > /* FIXME implement this */ > > } > > > > +/* HDMI HDR Colorspace Spec Definitions */ > > +#define NORMAL_COLORIMETRY_MASK 0x3 > > +#define EXTENDED_COLORIMETRY_MASK 0x7 > > +#define HDMI_COLORIMETRY_BT2020_YCC ((3 << 0) | (6 << 2) | (0 << 5)) > > void lspcon_set_infoframes(struct intel_encoder *encoder, > > bool enable, > > const struct intel_crtc_state *crtc_state, @@ -523,6 > +527,20 @@ > > void lspcon_set_infoframes(struct intel_encoder *encoder, > > else > > frame.avi.colorspace = HDMI_COLORSPACE_RGB; > > > > + /* > > + * Set BT2020 colorspace if driving HDR data > > + * ToDo: Make this generic and expose all colorspaces for > > + * lspcon. We need to expose HDMI colorspaces when we detect > > + * lspcon, this has to happen after connector is registered, > > + * so need to fix this appropriately > > + */ > > + if (lspcon->active && conn_state->hdr_output_metadata) { > > + frame.avi.colorimetry = HDMI_COLORIMETRY_BT2020_YCC & > > + NORMAL_COLORIMETRY_MASK; > > + frame.avi.extended_colorimetry = > (HDMI_COLORIMETRY_BT2020_YCC >> 2) & > > + > EXTENDED_COLORIMETRY_MASK; > > + } > > + > > I don't understand the point of dancing around this instead of just fixing it. > > There, I did half the work for you > https://patchwork.freedesktop.org/series/84309/ Somehow was not able to think of right way to handle this. Thanks Ville for your patience and help. I will add the patch to series and build on top of it. Regards, Uma Shankar > > > /* nonsense combination */ > > drm_WARN_ON(encoder->base.dev, crtc_state->limited_color_range && > > crtc_state->output_format != INTEL_OUTPUT_FORMAT_RGB); > > -- > > 2.26.2 > > -- > Ville Syrjälä > Intel
diff --git a/drivers/gpu/drm/i915/display/intel_lspcon.c b/drivers/gpu/drm/i915/display/intel_lspcon.c index 0a4c05d67108..f6f58a991e7a 100644 --- a/drivers/gpu/drm/i915/display/intel_lspcon.c +++ b/drivers/gpu/drm/i915/display/intel_lspcon.c @@ -481,6 +481,10 @@ void lspcon_read_infoframe(struct intel_encoder *encoder, /* FIXME implement this */ } +/* HDMI HDR Colorspace Spec Definitions */ +#define NORMAL_COLORIMETRY_MASK 0x3 +#define EXTENDED_COLORIMETRY_MASK 0x7 +#define HDMI_COLORIMETRY_BT2020_YCC ((3 << 0) | (6 << 2) | (0 << 5)) void lspcon_set_infoframes(struct intel_encoder *encoder, bool enable, const struct intel_crtc_state *crtc_state, @@ -523,6 +527,20 @@ void lspcon_set_infoframes(struct intel_encoder *encoder, else frame.avi.colorspace = HDMI_COLORSPACE_RGB; + /* + * Set BT2020 colorspace if driving HDR data + * ToDo: Make this generic and expose all colorspaces for + * lspcon. We need to expose HDMI colorspaces when we detect + * lspcon, this has to happen after connector is registered, + * so need to fix this appropriately + */ + if (lspcon->active && conn_state->hdr_output_metadata) { + frame.avi.colorimetry = HDMI_COLORIMETRY_BT2020_YCC & + NORMAL_COLORIMETRY_MASK; + frame.avi.extended_colorimetry = (HDMI_COLORIMETRY_BT2020_YCC >> 2) & + EXTENDED_COLORIMETRY_MASK; + } + /* nonsense combination */ drm_WARN_ON(encoder->base.dev, crtc_state->limited_color_range && crtc_state->output_format != INTEL_OUTPUT_FORMAT_RGB);
Enable Colorspace as BT2020 if driving HDR content.Sending Colorimetry data for HDR using AVI infoframe. LSPCON firmware expects this and though SOC drives DP, for HDMI panel AVI infoframe is sent to the LSPCON device which transfers the same to HDMI sink. v2: Dropped state managed in drm core as per Jani Nikula's suggestion. v3: Aligned colorimetry handling for lspcon as per compute_avi_infoframes, as suggested by Ville. v4: Added BT2020 as default for HDR. Adding the colorspace property interface for pcon will be take up separately. Moved changes of quantization in a separate patch as per Ville's comments. Signed-off-by: Uma Shankar <uma.shankar@intel.com> --- drivers/gpu/drm/i915/display/intel_lspcon.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)