[PATCH] drm/amd/display: disable CRTC degamma LUT for DCN401
Harry Wentland
harry.wentland at amd.com
Wed Jun 25 14:00:20 UTC 2025
On 2025-05-11 17:22, Melissa Wen wrote:
> In DCN401 pre-blending degamma LUT isn't affecting cursor as in previous
> DCN version. As this is not the behavior close to what is expected for
> CRTC degamma LUT, disable CRTC degamma LUT property in this HW.
>
> Link: https://gitlab.freedesktop.org/drm/amd/-/issues/4176
> Signed-off-by: Melissa Wen <mwen at igalia.com>
Sorry, Melissa, for the late response. I though we dealt with
this patch already but it looks like we didn't.
Thanks for the fix and your detailed explanation.
Reviewed-by: Harry Wentland <harry.wentland at amd.com>
Harry
> ---
>
> Hi,
>
> When enabling HDR on KDE, it takes the first CRTC 1D LUT available and
> apply a color transformation (Gamma 2.2 -> PQ). AMD driver usually
> advertises a CRTC degamma LUT as the first CRTC 1D LUT, but it's
> actually applied pre-blending. In previous HW version, it seems to work
> fine because the 1D LUT was applied to cursor too, but DCN401 presents a
> different behavior and the 1D LUT isn't affecting the hardware cursor.
>
> To address the wrong gamma on cursor with HDR (see the link), I came up
> with this patch that disables CRTC degamma LUT in this hw, since it
> presents a different behavior than others. With this KDE sees CRTC
> regamma LUT as the first post-blending 1D LUT available. This is
> actually more consistent with AMD color pipeline. It was tested by the
> reporter, since I don't have the HW available for local testing and
> debugging.
>
> Melissa
>
> .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
> index e8bdd7f0c460..db157b38f862 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
> @@ -737,7 +737,16 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
> * 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,
> + /* Dont't enable DRM CRTC degamma property for DCN401 since the
> + * pre-blending degamma LUT doesn't apply to cursor, and therefore
> + * can't work similar to a post-blending degamma LUT as in other hw
> + * versions.
> + * TODO: revisit it once KMS plane color API is merged.
> + */
> + 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);
>
> drm_mode_crtc_set_gamma_size(&acrtc->base, MAX_COLOR_LEGACY_LUT_ENTRIES);
More information about the amd-gfx
mailing list