On 01/18, Timur Kristóf wrote:
> Currently DCE doesn't support the overlay cursor, so the
> dm_crtc_get_cursor_mode() function returns DM_CURSOR_NATIVE_MODE
> unconditionally. The outcome is that it doesn't check for the
> conditions that would necessitate the overlay cursor, meaning
> that it doesn't reject cases where the native cursor mode isn't
> supported on DCE.
> 
> Remove the early return from dm_crtc_get_cursor_mode() for
> DCE and instead let it perform the necessary checks and
> return DM_CURSOR_OVERLAY_MODE. Add a later check that rejects
> when DM_CURSOR_OVERLAY_MODE would be used with DCE.
> 
> Fixes: 1b04dcca4fb1 ("drm/amd/display: Introduce overlay cursor mode")
> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4600
> Suggested-by: Leo Li <[email protected]>
> Signed-off-by: Timur Kristóf <[email protected]>
> ---
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> 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 655c9fcb078a..3e1ba5521f2b 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -12262,10 +12262,9 @@ static int dm_crtc_get_cursor_mode(struct 
> amdgpu_device *adev,
>  
>       /* Overlay cursor not supported on HW before DCN
>        * DCN401 does not have the cursor-on-scaled-plane or 
> cursor-on-yuv-plane restrictions
> -      * as previous DCN generations, so enable native mode on DCN401 in 
> addition to DCE
> +      * as previous DCN generations, so enable native mode on DCN401
>        */
> -     if (amdgpu_ip_version(adev, DCE_HWIP, 0) == 0 ||
> -         amdgpu_ip_version(adev, DCE_HWIP, 0) == IP_VERSION(4, 0, 1)) {
> +     if (amdgpu_ip_version(adev, DCE_HWIP, 0) == IP_VERSION(4, 0, 1)) {
>               *cursor_mode = DM_CURSOR_NATIVE_MODE;
>               return 0;
>       }
> @@ -12585,6 +12584,12 @@ static int amdgpu_dm_atomic_check(struct drm_device 
> *dev,
>                * need to be added for DC to not disable a plane by mistake
>                */
>               if (dm_new_crtc_state->cursor_mode == DM_CURSOR_OVERLAY_MODE) {
> +                     if (amdgpu_ip_version(adev, DCE_HWIP, 0) == 0) {
> +                             drm_dbg(dev, "Overlay cursor not supported on 
> DCE\n");
> +                             ret = -EINVAL;
> +                             goto fail;
> +                     }
> +
>                       ret = drm_atomic_add_affected_planes(state, crtc);
>                       if (ret)
>                               goto fail;
> -- 
> 2.52.0
>

Hi,

This change lgtm.

Alex, Dan,
Could you include this patch in the next week promotion? 

Reviewed-by: Rodrigo Siqueira <[email protected]>

Thanks

-- 
Rodrigo Siqueira

Reply via email to