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: dri-devel@lists.freedesktop.org
Cc: amd-...@lists.freedesktop.org
Reviewed-By: Joshua Ashton <jos...@froggi.es>
---
 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 f91b2ea13d96..2d883c6dae90 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -7184,6 +7184,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) |
+       BIT(DRM_MODE_COLORIMETRY_BT2020_DEPRECATED);
+
 void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm,
                                     struct amdgpu_dm_connector *aconnector,
                                     int connector_type,
@@ -7264,6 +7270,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.39.2

Reply via email to