[RFC PATCH] drm/amdgpu: Enable async flip for cursor planes

Christopher Snowhill chris at kode54.net
Fri Jun 20 10:10:08 UTC 2025


Here's another alternative change, which may be more thorough. It does
seem to fix the issue, at least. The issue does indeed appear to be
no-op plane changes sent to the cursor plane.

If anyone wants to propose style changes, and suggest a proper commit
message, if this is indeed a welcome fix for the problem, please let me
know.

diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
index c2726af6698e..b741939698e8 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
@@ -1087,17 +1087,22 @@ int drm_atomic_set_property(struct drm_atomic_state *state,
 			}

 			/* ask the driver if this non-primary plane is supported */
-			if (plane->type != DRM_PLANE_TYPE_PRIMARY) {
-				ret = -EINVAL;
+			else if (plane->type != DRM_PLANE_TYPE_PRIMARY) {
+				ret = drm_atomic_plane_get_property(plane, plane_state,
+								    prop, &old_val);
+
+				if (ret || old_val != prop_value) {
+					ret = -EINVAL;

-				if (plane_funcs && plane_funcs->atomic_async_check)
-					ret = plane_funcs->atomic_async_check(plane, state, true);
+					if (plane_funcs && plane_funcs->atomic_async_check)
+						ret = plane_funcs->atomic_async_check(plane, state, true);

-				if (ret) {
-					drm_dbg_atomic(prop->dev,
-						       "[PLANE:%d:%s] does not support async flips\n",
-						       obj->id, plane->name);
-					break;
+					if (ret) {
+						drm_dbg_atomic(prop->dev,
+							       "[PLANE:%d:%s] does not support async flips\n",
+							       obj->id, plane->name);
+						break;
+					}
 				}
 			}
 		}



More information about the amd-gfx mailing list