drm/amd/display: Disable CRTC degamma when color pipeline is enabled

The degamma is to be handled by Color pipeline API.

Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Simon Ser <contact@emersion.fr>
Link: https://patch.msgid.link/20251115000237.3561250-50-alex.hung@amd.com
This commit is contained in:
Alex Hung
2025-11-14 17:02:14 -07:00
committed by Simon Ser
parent 0c8025e6ae
commit 18a4127e93

View File

@@ -736,7 +736,7 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
{ {
struct amdgpu_crtc *acrtc = NULL; struct amdgpu_crtc *acrtc = NULL;
struct drm_plane *cursor_plane; struct drm_plane *cursor_plane;
bool is_dcn; bool has_degamma;
int res = -ENOMEM; int res = -ENOMEM;
cursor_plane = kzalloc(sizeof(*cursor_plane), GFP_KERNEL); cursor_plane = kzalloc(sizeof(*cursor_plane), GFP_KERNEL);
@@ -775,20 +775,18 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
dm->adev->mode_info.crtcs[crtc_index] = acrtc; dm->adev->mode_info.crtcs[crtc_index] = acrtc;
/* Don't enable DRM CRTC degamma property for DCE since it doesn't /* Don't enable DRM CRTC degamma property for
* support programmable degamma anywhere. * 1. Degamma is replaced by color pipeline.
* 2. DCE since it doesn't support programmable degamma anywhere.
* 3. DCN401 since pre-blending degamma LUT doesn't apply to cursor.
*/ */
is_dcn = dm->adev->dm.dc->caps.color.dpp.dcn_arch; if (plane->color_pipeline_property)
/* Dont't enable DRM CRTC degamma property for DCN401 since the has_degamma = false;
* pre-blending degamma LUT doesn't apply to cursor, and therefore else
* can't work similar to a post-blending degamma LUT as in other hw has_degamma = dm->adev->dm.dc->caps.color.dpp.dcn_arch &&
* versions. dm->adev->dm.dc->ctx->dce_version != DCN_VERSION_4_01;
* TODO: revisit it once KMS plane color API is merged.
*/ drm_crtc_enable_color_mgmt(&acrtc->base, has_degamma ? MAX_COLOR_LUT_ENTRIES : 0,
drm_crtc_enable_color_mgmt(&acrtc->base,
(is_dcn &&
dm->adev->dm.dc->ctx->dce_version != DCN_VERSION_4_01) ?
MAX_COLOR_LUT_ENTRIES : 0,
true, MAX_COLOR_LUT_ENTRIES); true, MAX_COLOR_LUT_ENTRIES);
drm_mode_crtc_set_gamma_size(&acrtc->base, MAX_COLOR_LEGACY_LUT_ENTRIES); drm_mode_crtc_set_gamma_size(&acrtc->base, MAX_COLOR_LEGACY_LUT_ENTRIES);