[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