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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2024-09-11 09:06, sunpeng.li@xxxxxxx wrote:
> From: Leo Li <sunpeng.li@xxxxxxx>
> 
> [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@xxxxxxx
> Signed-off-by: Leo Li <sunpeng.li@xxxxxxx>
> Tested-by: Mikhail Gavrilov <mikhail.v.gavrilov@xxxxxxxxx>

Reviewed-by: Harry Wentland <harry.wentland@xxxxxxx>

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 */




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux