On 2025-10-29 23:42, Alex Hung wrote:
> The degamma is to be handled by Color pipeline API.
> 
> Signed-off-by: Alex Hung <[email protected]>

Reviewed-by: Harry Wentland <[email protected]>

Harry

> ---
> v11:
>  - Merged enable condition for drm_crtc_enable_color_mgmt (Melissa Wen)  
> 
> v10:
>  - Disable CRTC degamma when color pipeline is enabled (Melissa Wen)
> 
>  .../amd/display/amdgpu_dm/amdgpu_dm_crtc.c    | 26 +++++++++----------
>  1 file changed, 12 insertions(+), 14 deletions(-)
> 
> 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 1ec9d03ad747..8d7fa1f80b9f 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
> @@ -721,7 +721,7 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
>  {
>       struct amdgpu_crtc *acrtc = NULL;
>       struct drm_plane *cursor_plane;
> -     bool is_dcn;
> +     bool has_degamma;
>       int res = -ENOMEM;
>  
>       cursor_plane = kzalloc(sizeof(*cursor_plane), GFP_KERNEL);
> @@ -760,20 +760,18 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager 
> *dm,
>  
>       dm->adev->mode_info.crtcs[crtc_index] = acrtc;
>  
> -     /* Don't enable DRM CRTC degamma property for DCE since it doesn't
> -      * support programmable degamma anywhere.
> +     /* Don't enable DRM CRTC degamma property for
> +      * 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;
> -     /* 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,
> +     if (plane->color_pipeline_property)
> +             has_degamma = false;
> +     else
> +             has_degamma = dm->adev->dm.dc->caps.color.dpp.dcn_arch &&
> +                           dm->adev->dm.dc->ctx->dce_version != 
> DCN_VERSION_4_01;
> +
> +     drm_crtc_enable_color_mgmt(&acrtc->base, has_degamma ? 
> MAX_COLOR_LUT_ENTRIES : 0,
>                                  true, MAX_COLOR_LUT_ENTRIES);
>  
>       drm_mode_crtc_set_gamma_size(&acrtc->base, 
> MAX_COLOR_LEGACY_LUT_ENTRIES);

Reply via email to