diff options
Diffstat (limited to 'drivers/gpu/drm/drm_connector.c')
| -rw-r--r-- | drivers/gpu/drm/drm_connector.c | 40 | 
1 files changed, 40 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c index c9ac8b9e83ea..e17586aaa80f 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -956,6 +956,46 @@ static const struct drm_prop_enum_list hdmi_colorspaces[] = {   *	  is no longer protected and userspace should take appropriate action   *	  (whatever that might be).   * + * HDR_OUTPUT_METADATA: + *	Connector property to enable userspace to send HDR Metadata to + *	driver. This metadata is based on the composition and blending + *	policies decided by user, taking into account the hardware and + *	sink capabilities. The driver gets this metadata and creates a + *	Dynamic Range and Mastering Infoframe (DRM) in case of HDMI, + *	SDP packet (Non-audio INFOFRAME SDP v1.3) for DP. This is then + *	sent to sink. This notifies the sink of the upcoming frame's Color + *	Encoding and Luminance parameters. + * + *	Userspace first need to detect the HDR capabilities of sink by + *	reading and parsing the EDID. Details of HDR metadata for HDMI + *	are added in CTA 861.G spec. For DP , its defined in VESA DP + *	Standard v1.4. It needs to then get the metadata information + *	of the video/game/app content which are encoded in HDR (basically + *	using HDR transfer functions). With this information it needs to + *	decide on a blending policy and compose the relevant + *	layers/overlays into a common format. Once this blending is done, + *	userspace will be aware of the metadata of the composed frame to + *	be send to sink. It then uses this property to communicate this + *	metadata to driver which then make a Infoframe packet and sends + *	to sink based on the type of encoder connected. + * + *	Userspace will be responsible to do Tone mapping operation in case: + *		- Some layers are HDR and others are SDR + *		- HDR layers luminance is not same as sink + *	It will even need to do colorspace conversion and get all layers + *	to one common colorspace for blending. It can use either GL, Media + *	or display engine to get this done based on the capabilties of the + *	associated hardware. + * + *	Driver expects metadata to be put in &struct hdr_output_metadata + *	structure from userspace. This is received as blob and stored in + *	&drm_connector_state.hdr_output_metadata. It parses EDID and saves the + *	sink metadata in &struct hdr_sink_metadata, as + *	&drm_connector.hdr_sink_metadata.  Driver uses + *	drm_hdmi_infoframe_set_hdr_metadata() helper to set the HDR metadata, + *	hdmi_drm_infoframe_pack() to pack the infoframe as per spec, in case of + *	HDMI encoder. + *   * max bpc:   *	This range property is used by userspace to limit the bit depth. When   *	used the driver would limit the bpc in accordance with the valid range  | 
