Re: [PATCH] Revert "drm/amd/display: Fix overlay validation by considering cursors"

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

 



On Wed, Jun 16, 2021 at 12:21 PM Rodrigo Siqueira
<Rodrigo.Siqueira@xxxxxxx> wrote:
>
> This reverts commit 04cc17a951f73f9a9092ca572b063e6292aeb085.
>
> The patch that we are reverting here was originally applied because it
> fixes multiple IGT issues and flickering in Android. However, after a
> discussion with Sean Paul and Mark, it looks like that this patch might
> cause problems on ChromeOS. For this reason, we decided to revert this
> patch.

Thanks for sending this, Siqueira!

To be clear for those unfamiliar, the issue extends beyond ChromeOS
(we're not just pushing our compositor problems on the rest of the
community).

Relying on cursor enable/disable for atomic creates non-deterministic
behavior which would be very hard for any compositor to reason out
without knowing the hardware-specific limitations. The case I'm
worried about is that the compositor has an overlay active without the
cursor and at some point the compositor enables the cursor which will
fail because of the overlay.

Reviewed-by: Sean Paul <seanpaul@xxxxxxxxxxxx>

>
> Cc: Nicholas Kazlauskas <Nicholas.Kazlauskas@xxxxxxx>
> Cc: Harry Wentland <Harry.Wentland@xxxxxxx>
> Cc: Hersen Wu <hersenxs.wu@xxxxxxx>
> Cc: Sean Paul <seanpaul@xxxxxxxxxxxx>
> Cc: Mark Yacoub <markyacoub@xxxxxxxxxxxx>
> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@xxxxxxx>
> ---
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 12 ++----------
>  1 file changed, 2 insertions(+), 10 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 8358112b5822..3fd41e098c90 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -10200,8 +10200,8 @@ static int validate_overlay(struct drm_atomic_state *state)
>  {
>         int i;
>         struct drm_plane *plane;
> -       struct drm_plane_state *new_plane_state;
> -       struct drm_plane_state *primary_state, *cursor_state, *overlay_state = NULL;
> +       struct drm_plane_state *old_plane_state, *new_plane_state;
> +       struct drm_plane_state *primary_state, *overlay_state = NULL;
>
>         /* Check if primary plane is contained inside overlay */
>         for_each_new_plane_in_state_reverse(state, plane, new_plane_state, i) {
> @@ -10231,14 +10231,6 @@ static int validate_overlay(struct drm_atomic_state *state)
>         if (!primary_state->crtc)
>                 return 0;
>
> -       /* check if cursor plane is enabled */
> -       cursor_state = drm_atomic_get_plane_state(state, overlay_state->crtc->cursor);
> -       if (IS_ERR(cursor_state))
> -               return PTR_ERR(cursor_state);
> -
> -       if (drm_atomic_plane_disabling(plane->state, cursor_state))
> -               return 0;
> -
>         /* Perform the bounds check to ensure the overlay plane covers the primary */
>         if (primary_state->crtc_x < overlay_state->crtc_x ||
>             primary_state->crtc_y < overlay_state->crtc_y ||
> --
> 2.25.1
>
_______________________________________________
amd-gfx mailing list
amd-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/amd-gfx



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

  Powered by Linux