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