On Fri, Sep 06, 2019 at 11:31:55AM +0000, Shankar, Uma wrote:
-----Original Message----- From: Ilia Mirkin imirkin@alum.mit.edu Sent: Tuesday, September 3, 2019 6:12 PM To: Mun, Gwan-gyeong gwan-gyeong.mun@intel.com Cc: Intel Graphics Development intel-gfx@lists.freedesktop.org; Shankar, Uma uma.shankar@intel.com; dri-devel dri-devel@lists.freedesktop.org Subject: Re: [PATCH v4 3/7] drm: Add DisplayPort colorspace property
So how would this work with a DP++ connector? Should it list the HDMI or DP properties? Or do we need a custom property checker which is aware of what is currently plugged in to validate the values?
AFAIU For DP++ cases, we detect what kind of sink its driving DP or HDMI (with a passive dongle). Based on the type of sink detected, we should expose DP or HDMI colorspaces to userspace.
For i915 DP connector always drives DP mode, HDMI connector always drives HDMI mode, even when the physical connector is DP++.
On Tue, Sep 3, 2019 at 5:12 AM Gwan-gyeong Mun gwan-gyeong.mun@intel.com wrote:
In order to use colorspace property to Display Port connectors, it extends DRM_MODE_CONNECTOR_DisplayPort connector_type on drm_mode_create_colorspace_property function.
v3: Addressed review comments from Ville - Add new colorimetry options for DP 1.4a spec. - Separate set of colorimetry enum values for DP. v4: Add additional comments to struct drm_prop_enum_list. Polishing an enum string of struct drm_prop_enum_list Signed-off-by: Gwan-gyeong Mun gwan-gyeong.mun@intel.com Reviewed-by: Uma Shankar uma.shankar@intel.com
drivers/gpu/drm/drm_connector.c | 46 +++++++++++++++++++++++++++++++++ include/drm/drm_connector.h | 8 ++++++ 2 files changed, 54 insertions(+)
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c index 4c766624b20d..5834e6d330a0 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -882,6 +882,44 @@ static const struct drm_prop_enum_list
hdmi_colorspaces[] = {
{ DRM_MODE_COLORIMETRY_DCI_P3_RGB_THEATER,
"DCI-P3_RGB_Theater" }, };
+/*
- As per DP 1.4a spec, 2.2.5.7.5 VSC SDP Payload for Pixel
+Encoding/Colorimetry
- Format Table 2-120
- */
+static const struct drm_prop_enum_list dp_colorspaces[] = {
/* For Default case, driver will set the colorspace */
{ DRM_MODE_COLORIMETRY_DEFAULT, "Default" },
/* Colorimetry based on IEC 61966-2-1 */
{ DRM_MODE_COLORIMETRY_SRGB, "sRGB" },
{ DRM_MODE_COLORIMETRY_WIDE_GAMUT_FIXED_POINT_RGB,
"wide_gamut_fixed_point_RGB" },
/* Colorimetry based on IEC 61966-2-2, wide gamut floating point RGB */
{ DRM_MODE_COLORIMETRY_SCRGB, "scRGB" },
{ DRM_MODE_COLORIMETRY_ADOBE_RGB, "Adobe_RGB" },
/* Colorimetry based on SMPTE RP 431-2 */
{ DRM_MODE_COLORIMETRY_DCP_P3_RGB, "DCI-P3_RGB" },
/* Colorimetry based on ITU-R BT.2020 */
{ DRM_MODE_COLORIMETRY_BT2020_RGB, "BT2020_RGB" },
{ DRM_MODE_COLORIMETRY_BT601_YCC, "BT601_YCC" },
{ DRM_MODE_COLORIMETRY_BT709_YCC, "BT709_YCC" },
/* Standard Definition Colorimetry based on IEC 61966-2-4 */
{ DRM_MODE_COLORIMETRY_XVYCC_601, "XVYCC_601" },
/* High Definition Colorimetry based on IEC 61966-2-4 */
{ DRM_MODE_COLORIMETRY_XVYCC_709, "XVYCC_709" },
/* Colorimetry based on IEC 61966-2-1/Amendment 1 */
{ DRM_MODE_COLORIMETRY_SYCC_601, "SYCC_601" },
/* Colorimetry based on IEC 61966-2-5 [33] */
{ DRM_MODE_COLORIMETRY_OPYCC_601, "opYCC_601" },
/* Colorimetry based on ITU-R BT.2020 */
{ DRM_MODE_COLORIMETRY_BT2020_CYCC, "BT2020_CYCC" },
/* Colorimetry based on ITU-R BT.2020 */
{ DRM_MODE_COLORIMETRY_BT2020_YCC, "BT2020_YCC" },
/*
* Colorumetry based on Digital Imaging and Communications in Medicine
* (DICOM) Part 14: Grayscale Standard Display Function
*/
{ DRM_MODE_COLORIMETRY_DICOM_PART_14_GRAYSCALE,
+"DICOM_Part_14_Grayscale" }, };
/**
- DOC: standard connector properties
@@ -1710,6 +1748,14 @@ int drm_mode_create_colorspace_property(struct
drm_connector *connector)
ARRAY_SIZE(hdmi_colorspaces)); if (!prop) return -ENOMEM;
} else if (connector->connector_type ==
DRM_MODE_CONNECTOR_DisplayPort ||
connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
prop = drm_property_create_enum(dev, DRM_MODE_PROP_ENUM,
"Colorspace",
dp_colorspaces,
ARRAY_SIZE(dp_colorspaces));
if (!prop)
return -ENOMEM; } else { DRM_DEBUG_KMS("Colorspace property not supported\n"); return 0;
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index 681cb590f952..8848e5d6b0c4 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -281,6 +281,14 @@ enum drm_panel_orientation { /* Additional Colorimetry extension added as part of CTA 861.G */ #define DRM_MODE_COLORIMETRY_DCI_P3_RGB_D65 11 #define DRM_MODE_COLORIMETRY_DCI_P3_RGB_THEATER 12 +/* Additional Colorimetry Options added for DP 1.4a VSC Colorimetry Format */ +#define DRM_MODE_COLORIMETRY_SRGB 13 +#define DRM_MODE_COLORIMETRY_WIDE_GAMUT_FIXED_POINT_RGB 14 +#define DRM_MODE_COLORIMETRY_SCRGB 15 +#define DRM_MODE_COLORIMETRY_ADOBE_RGB 16 +#define DRM_MODE_COLORIMETRY_DCP_P3_RGB 17 +#define DRM_MODE_COLORIMETRY_BT601_YCC 18 +#define DRM_MODE_COLORIMETRY_DICOM_PART_14_GRAYSCALE 19
/**
- enum drm_bus_flags - bus_flags info for &drm_display_info
-- 2.23.0
dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel