]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/amd/display: don't enable DRM CRTC degamma property for DCE
authorMelissa Wen <mwen@igalia.com>
Thu, 3 Nov 2022 18:45:00 +0000 (17:45 -0100)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 15 Nov 2022 18:23:48 +0000 (13:23 -0500)
DM maps DRM CRTC degamma to DPP (pre-blending) degamma block, but DCE doesn't
support programmable degamma curve anywhere. Currently, a custom degamma is
accepted by DM but just ignored by DCE driver and degamma correction isn't
actually applied. There is no way to map custom degamma in DCE, therefore, DRM
CRTC degamma property shouldn't be enabled for DCE drivers.

Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Melissa Wen <mwen@igalia.com>
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c

index 594fe8a4d02b02f3ccb2b9852cfd60b90697ddfe..64dd029702926f70c32b5fd370d9c3ca8ef5bccd 100644 (file)
@@ -412,7 +412,7 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
 {
        struct amdgpu_crtc *acrtc = NULL;
        struct drm_plane *cursor_plane;
-
+       bool is_dcn;
        int res = -ENOMEM;
 
        cursor_plane = kzalloc(sizeof(*cursor_plane), GFP_KERNEL);
@@ -450,8 +450,14 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
        acrtc->otg_inst = -1;
 
        dm->adev->mode_info.crtcs[crtc_index] = acrtc;
-       drm_crtc_enable_color_mgmt(&acrtc->base, MAX_COLOR_LUT_ENTRIES,
+
+       /* Don't enable DRM CRTC degamma property for DCE since it doesn't
+        * support programmable degamma anywhere.
+        */
+       is_dcn = dm->adev->dm.dc->caps.color.dpp.dcn_arch;
+       drm_crtc_enable_color_mgmt(&acrtc->base, is_dcn ? MAX_COLOR_LUT_ENTRIES : 0,
                                   true, MAX_COLOR_LUT_ENTRIES);
+
        drm_mode_crtc_set_gamma_size(&acrtc->base, MAX_COLOR_LEGACY_LUT_ENTRIES);
 
        return 0;