We want compositors to be able to set the output
colorspace on DP and HDMI outputs, based on the
caps reported from the receiver via EDID.

Signed-off-by: Harry Wentland <harry.wentl...@amd.com>
Cc: Pekka Paalanen <ppaala...@gmail.com>
Cc: Sebastian Wick <sebastian.w...@redhat.com>
Cc: vitaly.pros...@amd.com
Cc: Joshua Ashton <jos...@froggi.es>
Cc: Simon Ser <cont...@emersion.fr>
Cc: Ville Syrjälä <ville.syrj...@linux.intel.com>
Cc: Melissa Wen <m...@igalia.com>
Cc: dri-de...@lists.freedesktop.org
Cc: amd-gfx@lists.freedesktop.org
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index ca093396d1ac..dc99a8ffac70 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -7238,6 +7238,12 @@ static int amdgpu_dm_connector_get_modes(struct 
drm_connector *connector)
        return amdgpu_dm_connector->num_modes;
 }
 
+static const u32 supported_colorspaces =
+       BIT(DRM_MODE_COLORIMETRY_BT709_YCC) |
+       BIT(DRM_MODE_COLORIMETRY_OPRGB) |
+       BIT(DRM_MODE_COLORIMETRY_BT2020_RGB) |
+       BIT(DRM_MODE_COLORIMETRY_BT2020_YCC);
+
 void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm,
                                     struct amdgpu_dm_connector *aconnector,
                                     int connector_type,
@@ -7318,6 +7324,15 @@ void amdgpu_dm_connector_init_helper(struct 
amdgpu_display_manager *dm,
                                adev->mode_info.abm_level_property, 0);
        }
 
+       if (connector_type == DRM_MODE_CONNECTOR_HDMIA) {
+               if 
(!drm_mode_create_hdmi_colorspace_property(&aconnector->base, 
supported_colorspaces))
+                       
drm_connector_attach_colorspace_property(&aconnector->base);
+       } else if (connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
+                  connector_type == DRM_MODE_CONNECTOR_eDP) {
+               if (!drm_mode_create_dp_colorspace_property(&aconnector->base, 
supported_colorspaces))
+                       
drm_connector_attach_colorspace_property(&aconnector->base);
+       }
+
        if (connector_type == DRM_MODE_CONNECTOR_HDMIA ||
            connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
            connector_type == DRM_MODE_CONNECTOR_eDP) {
-- 
2.40.1

Reply via email to