[PATCH] drm/amd/display: Add all planes on CRTC to state for overlay cursor

Harry Wentland harry.wentland at amd.com
Wed Sep 11 13:40:58 UTC 2024



On 2024-09-11 09:06, sunpeng.li at amd.com wrote:
> From: Leo Li <sunpeng.li at amd.com>
> 
> [Why]
> 
> DC has a special commit path for native cursor, which use the built-in
> cursor pipe within DCN planes. This update path does not require all
> enabled planes to be added to the list of surface updates sent to DC.
> 
> This is not the case for overlay cursor; it uses the same path as MPO
> commits. This update path requires all enabled planes to be added to the
> list of surface updates sent to DC. Otherwise, DC will disable planes
> not inside the list.
> 
> [How]
> 
> If overlay cursor is needed, add all planes on the same CRTC as this
> cursor to the atomic state. This is already done for non-cursor planes
> (MPO), just before the added lines.
> 
> Fixes: 1b04dcca4fb1 ("drm/amd/display: Introduce overlay cursor mode")
> Closes: https://lore.kernel.org/lkml/f68020a3-c413-482d-beb2-5432d98a1d3e@amd.com
> Signed-off-by: Leo Li <sunpeng.li at amd.com>
> Tested-by: Mikhail Gavrilov <mikhail.v.gavrilov at gmail.com>

Reviewed-by: Harry Wentland <harry.wentland at amd.com>

Harry

> ---
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 11 +++++++++++
>  1 file changed, 11 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 a3edaf658ae00..6b5baa3e20c49 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -11427,6 +11427,17 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
>  			drm_dbg(dev, "Failed to determine cursor mode\n");
>  			goto fail;
>  		}
> +
> +		/*
> +		 * If overlay cursor is needed, DC cannot go through the
> +		 * native cursor update path. All enabled planes on the CRTC
> +		 * need to be added for DC to not disable a plane by mistake
> +		 */
> +		if (dm_new_crtc_state->cursor_mode == DM_CURSOR_OVERLAY_MODE) {
> +			ret = drm_atomic_add_affected_planes(state, crtc);
> +			if (ret)
> +				goto fail;
> +		}
>  	}
>  
>  	/* Remove exiting planes if they are modified */



More information about the amd-gfx mailing list