Message ID | 20240629152204.666748-1-contact@emersion.fr (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/atomic: allow no-op FB_ID updates for async flips | expand |
Hi Simon, thanks for the fix! Em 29/06/2024 12:22, Simon Ser escreveu: > User-space is allowed to submit any property in an async flip as > long as the value doesn't change. However we missed one case: > as things stand, the kernel rejects no-op FB_ID changes on > non-primary planes. Fix this by changing the conditional and > skipping drm_atomic_check_prop_changes() only for FB_ID on the > primary plane (instead of skipping for FB_ID on any plane). > > Fixes: 0e26cc72c71c ("drm: Refuse to async flip with atomic prop changes") > Signed-off-by: Simon Ser <contact@emersion.fr> Reviewed-by: André Almeida <andrealmeid@igalia.com>
diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c index 22bbb2d83e30..1764bb0dbbdf 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -1070,21 +1070,14 @@ int drm_atomic_set_property(struct drm_atomic_state *state, break; } - if (async_flip && prop != config->prop_fb_id) { + if (async_flip && (prop != config->prop_fb_id || + plane_state->plane->type != DRM_PLANE_TYPE_PRIMARY)) { ret = drm_atomic_plane_get_property(plane, plane_state, prop, &old_val); ret = drm_atomic_check_prop_changes(ret, old_val, prop_value, prop); break; } - if (async_flip && plane_state->plane->type != DRM_PLANE_TYPE_PRIMARY) { - drm_dbg_atomic(prop->dev, - "[OBJECT:%d] Only primary planes can be changed during async flip\n", - obj->id); - ret = -EINVAL; - break; - } - ret = drm_atomic_plane_set_property(plane, plane_state, file_priv, prop, prop_value);
User-space is allowed to submit any property in an async flip as long as the value doesn't change. However we missed one case: as things stand, the kernel rejects no-op FB_ID changes on non-primary planes. Fix this by changing the conditional and skipping drm_atomic_check_prop_changes() only for FB_ID on the primary plane (instead of skipping for FB_ID on any plane). Fixes: 0e26cc72c71c ("drm: Refuse to async flip with atomic prop changes") Signed-off-by: Simon Ser <contact@emersion.fr> Cc: André Almeida <andrealmeid@igalia.com> Cc: Alex Deucher <alexander.deucher@amd.com> Cc: Christian König <christian.koenig@amd.com> Cc: Michel Dänzer <michel.daenzer@mailbox.org> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/drm_atomic_uapi.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-)