Re: [PATCH v12 2/2] drm/amdgpu: Enable async flip on overlay planes

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

 



Em 29/01/2025 11:36, Xaver Hugl escreveu:
Am Mo., 27. Jan. 2025 um 21:00 Uhr schrieb André Almeida
<andrealmeid@xxxxxxxxxx>:

amdgpu can handle async flips on overlay planes, so allow it for atomic
async checks.

Signed-off-by: André Almeida <andrealmeid@xxxxxxxxxx>
---
  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 10 ++++++----
  1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index 774cc3f4f3fd9a964fe48c66eb596d2f6dfee602..6bfed3d1530e6610eea025b477f409ee505870da 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
@@ -1258,21 +1258,23 @@ static int amdgpu_dm_plane_atomic_check(struct drm_plane *plane,
  }

  static int amdgpu_dm_plane_atomic_async_check(struct drm_plane *plane,
-                                             struct drm_atomic_state *state)
+                                             struct drm_atomic_state *state, bool flip)
  {
         struct drm_crtc_state *new_crtc_state;
         struct drm_plane_state *new_plane_state;
         struct dm_crtc_state *dm_new_crtc_state;

-       /* Only support async updates on cursor planes. */
-       if (plane->type != DRM_PLANE_TYPE_CURSOR)
+       if (flip) {
+               if (plane->type != DRM_PLANE_TYPE_OVERLAY)
+                       return -EINVAL;
+       } else if (plane->type != DRM_PLANE_TYPE_CURSOR)
                 return -EINVAL;

This changes the logic for cursor updates, flipping on the cursor
plane allowed async updates before. Is that intentional?


It's not the intention of this patch to disable async updates on cursor planes... but I don't think it's happening here? Async plane updates and async page flips are different things.

Any function that used to call amdgpu_dm_plane_atomic_async_check() for an async update on a cursor plane will continue to being able to do that.

For callers of _atomic_async_check() from a page flip path (like drm_atomic_set_property()), those couldn't flip a cursor plane, and will continue to be like that for now.

At least this is my analysis, please let me know if I got something wrong.



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

  Powered by Linux