From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [v2 2/2] drm/i915: Attach colorspace property and enable modeset Date: Sat, 3 Nov 2018 11:51:15 +0530 Message-ID: <811275e1-c52f-873f-8b2f-a1793929aa1c@intel.com> References: <1540987546-3142-1-git-send-email-uma.shankar@intel.com> <1540987546-3142-3-git-send-email-uma.shankar@intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0573022178==" Return-path: In-Reply-To: <1540987546-3142-3-git-send-email-uma.shankar@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Uma Shankar , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: emil.l.velikov@gmail.com, ville.syrjala@intel.com, maarten.lankhorst@intel.com List-Id: dri-devel@lists.freedesktop.org This is a multi-part message in MIME format. --===============0573022178== Content-Type: multipart/alternative; boundary="------------A40A85A310F83A5050F2E24E" This is a multi-part message in MIME format. --------------A40A85A310F83A5050F2E24E Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Regards Shashank On 10/31/2018 5:35 PM, Uma Shankar wrote: > This patch attaches the colorspace connector property to the > hdmi connector. Based on colorspace change, modeset will be > triggered to switch to new colorspace. > > Based on colorspace property value create an infoframe > with appropriate colorspace. This can be used to send an > infoframe packet with proper colorspace value set which > will help to enable wider color gamut like BT2020 on sink. > > v2: Merged the changes of creating infoframe as well to this > patch as per Maarten's suggestion. > > Signed-off-by: Uma Shankar > --- > drivers/gpu/drm/i915/intel_atomic.c | 1 + > drivers/gpu/drm/i915/intel_hdmi.c | 5 +++++ > 2 files changed, 6 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_atomic.c b/drivers/gpu/drm/i915/intel_atomic.c > index a5a2c8f..35ef70a 100644 > --- a/drivers/gpu/drm/i915/intel_atomic.c > +++ b/drivers/gpu/drm/i915/intel_atomic.c > @@ -125,6 +125,7 @@ int intel_digital_connector_atomic_check(struct drm_connector *conn, > */ > if (new_conn_state->force_audio != old_conn_state->force_audio || > new_conn_state->broadcast_rgb != old_conn_state->broadcast_rgb || > + new_state->colorspace != old_state->colorspace || > new_conn_state->base.picture_aspect_ratio != old_conn_state->base.picture_aspect_ratio || > new_conn_state->base.content_type != old_conn_state->base.content_type || > new_conn_state->base.scaling_mode != old_conn_state->base.scaling_mode) > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c > index 129b880..8a41fb3 100644 > --- a/drivers/gpu/drm/i915/intel_hdmi.c > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > @@ -486,6 +486,8 @@ static void intel_hdmi_set_avi_infoframe(struct intel_encoder *encoder, > else > frame.avi.colorspace = HDMI_COLORSPACE_RGB; > > + frame.avi.extended_colorimetry = conn_state->colorspace; > + We must also set the date byte 2 bits C1-C0 (colorimetry part) to indicate the use of extended colorimetry bits, so that monitor will refer to extended colorimetry data, else it wont even bother looking at it: Extended Colorimetry Information Valid (colorimetry indicated in bits EC0, EC1, and EC2) Its right now set to dafault 0-0 I guess, indicating No data We should also set it to a default value now, when we have started bothering about gamut. Regards Shashank > drm_hdmi_avi_infoframe_quant_range(&frame.avi, adjusted_mode, > crtc_state->limited_color_range ? > HDMI_QUANTIZATION_RANGE_LIMITED : > @@ -2125,6 +2127,9 @@ static void intel_hdmi_destroy(struct drm_connector *connector) > intel_attach_broadcast_rgb_property(connector); > intel_attach_aspect_ratio_property(connector); > drm_connector_attach_content_type_property(connector); > + drm_object_attach_property(&connector->base, > + connector->dev->mode_config.colorspace_property, > + COLORIMETRY_ITU_709); > connector->state->picture_aspect_ratio = HDMI_PICTURE_ASPECT_NONE; > } > --------------A40A85A310F83A5050F2E24E Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: 8bit

Regards

Shashank


On 10/31/2018 5:35 PM, Uma Shankar wrote:
This patch attaches the colorspace connector property to the
hdmi connector. Based on colorspace change, modeset will be
triggered to switch to new colorspace.

Based on colorspace property value create an infoframe
with appropriate colorspace. This can be used to send an
infoframe packet with proper colorspace value set which
will help to enable wider color gamut like BT2020 on sink.

v2: Merged the changes of creating infoframe as well to this
patch as per Maarten's suggestion.

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 drivers/gpu/drm/i915/intel_atomic.c | 1 +
 drivers/gpu/drm/i915/intel_hdmi.c   | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_atomic.c b/drivers/gpu/drm/i915/intel_atomic.c
index a5a2c8f..35ef70a 100644
--- a/drivers/gpu/drm/i915/intel_atomic.c
+++ b/drivers/gpu/drm/i915/intel_atomic.c
@@ -125,6 +125,7 @@ int intel_digital_connector_atomic_check(struct drm_connector *conn,
 	 */
 	if (new_conn_state->force_audio != old_conn_state->force_audio ||
 	    new_conn_state->broadcast_rgb != old_conn_state->broadcast_rgb ||
+	    new_state->colorspace != old_state->colorspace ||
 	    new_conn_state->base.picture_aspect_ratio != old_conn_state->base.picture_aspect_ratio ||
 	    new_conn_state->base.content_type != old_conn_state->base.content_type ||
 	    new_conn_state->base.scaling_mode != old_conn_state->base.scaling_mode)
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 129b880..8a41fb3 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -486,6 +486,8 @@ static void intel_hdmi_set_avi_infoframe(struct intel_encoder *encoder,
 	else
 		frame.avi.colorspace = HDMI_COLORSPACE_RGB;
 
+	frame.avi.extended_colorimetry = conn_state->colorspace;
+
We must also set the date byte 2 bits C1-C0 (colorimetry part) to indicate the use of extended colorimetry bits, so that monitor will refer to extended colorimetry data, else it wont even bother looking at it:

Extended Colorimetry Information Valid (colorimetry indicated in bits EC0, EC1, and EC2)

Its right now set to dafault 0-0 I guess, indicating No data We should also set it to a default value now, when we have started bothering about gamut.

Regards
Shashank
 	drm_hdmi_avi_infoframe_quant_range(&frame.avi, adjusted_mode,
 					   crtc_state->limited_color_range ?
 					   HDMI_QUANTIZATION_RANGE_LIMITED :
@@ -2125,6 +2127,9 @@ static void intel_hdmi_destroy(struct drm_connector *connector)
 	intel_attach_broadcast_rgb_property(connector);
 	intel_attach_aspect_ratio_property(connector);
 	drm_connector_attach_content_type_property(connector);
+	drm_object_attach_property(&connector->base,
+			connector->dev->mode_config.colorspace_property,
+			COLORIMETRY_ITU_709);
 	connector->state->picture_aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
 }
 

--------------A40A85A310F83A5050F2E24E-- --===============0573022178== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== --===============0573022178==--