>-----Original Message----- >From: Ilia Mirkin <imirkin@xxxxxxxxxxxx> >Sent: Tuesday, September 3, 2019 6:12 PM >To: Mun, Gwan-gyeong <gwan-gyeong.mun@xxxxxxxxx> >Cc: Intel Graphics Development <intel-gfx@xxxxxxxxxxxxxxxxxxxxx>; Shankar, Uma ><uma.shankar@xxxxxxxxx>; dri-devel <dri-devel@xxxxxxxxxxxxxxxxxxxxx> >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. >On Tue, Sep 3, 2019 at 5:12 AM Gwan-gyeong Mun <gwan-gyeong.mun@xxxxxxxxx> >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@xxxxxxxxx> >> Reviewed-by: Uma Shankar <uma.shankar@xxxxxxxxx> >> --- >> 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@xxxxxxxxxxxxxxxxxxxxx >> https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel