It's the only flag anyone actually cares about. Plus if we're unlucky,
the atomic ioctl might need a different flag for async flips. So
better to abstract this away from the uapi a bit.

Cc: Maarten Lankhorst <maarten.lankho...@linux.intel.com>
Cc: Michel Dänzer <mic...@daenzer.net>
Cc: Alex Deucher <alexdeuc...@gmail.com>
Cc: Adam Jackson <a...@redhat.com>
Cc: Sean Paul <s...@poorly.run>
Cc: David Airlie <airl...@linux.ie>
Signed-off-by: Daniel Vetter <daniel.vet...@intel.com>
Cc: Maxime Ripard <maxime.rip...@bootlin.com>
Cc: Daniel Vetter <dan...@ffwll.ch>
Cc: Nicholas Kazlauskas <nicholas.kazlaus...@amd.com>
Cc: Leo Li <sunpeng...@amd.com>
Cc: Harry Wentland <harry.wentl...@amd.com>
Cc: David Francis <david.fran...@amd.com>
Cc: Mario Kleiner <mario.kleiner...@gmail.com>
Cc: Bhawanpreet Lakha <bhawanpreet.la...@amd.com>
Cc: Ben Skeggs <bske...@redhat.com>
Cc: "Christian König" <christian.koe...@amd.com>
Cc: Ilia Mirkin <imir...@alum.mit.edu>
Cc: Sam Ravnborg <s...@ravnborg.org>
Cc: Chris Wilson <ch...@chris-wilson.co.uk>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 ++---
 drivers/gpu/drm/drm_atomic_helper.c               | 2 +-
 drivers/gpu/drm/drm_atomic_state_helper.c         | 2 +-
 drivers/gpu/drm/nouveau/dispnv50/wndw.c           | 4 ++--
 include/drm/drm_crtc.h                            | 8 ++++----
 5 files changed, 10 insertions(+), 11 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 028a710c1b46..b3c5ab3d09d5 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -5740,8 +5740,7 @@ static void amdgpu_dm_commit_planes(struct 
drm_atomic_state *state,
                 * change FB pitch, DCC state, rotation or mirroing.
                 */
                bundle->flip_addrs[planes_count].flip_immediate =
-                       (crtc->state->pageflip_flags &
-                        DRM_MODE_PAGE_FLIP_ASYNC) != 0 &&
+                       crtc->state->async_flip &&
                        acrtc_state->update_type == UPDATE_TYPE_FAST;
 
                timestamp_ns = ktime_get_ns();
@@ -6335,7 +6334,7 @@ static void amdgpu_dm_atomic_commit_tail(struct 
drm_atomic_state *state)
        amdgpu_dm_enable_crtc_interrupts(dev, state, true);
 
        for_each_new_crtc_in_state(state, crtc, new_crtc_state, j)
-               if (new_crtc_state->pageflip_flags & DRM_MODE_PAGE_FLIP_ASYNC)
+               if (new_crtc_state->async_flip)
                        wait_for_vblank = false;
 
        /* update planes when needed per crtc*/
diff --git a/drivers/gpu/drm/drm_atomic_helper.c 
b/drivers/gpu/drm/drm_atomic_helper.c
index 9f17746f4251..8dbf416e2807 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -3262,7 +3262,7 @@ static int page_flip_common(struct drm_atomic_state 
*state,
                return PTR_ERR(crtc_state);
 
        crtc_state->event = event;
-       crtc_state->pageflip_flags = flags;
+       crtc_state->async_flip = flags & DRM_MODE_PAGE_FLIP_ASYNC;
 
        plane_state = drm_atomic_get_plane_state(state, plane);
        if (IS_ERR(plane_state))
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c 
b/drivers/gpu/drm/drm_atomic_state_helper.c
index 46dc264a248b..d0a937fb0c56 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -128,7 +128,7 @@ void __drm_atomic_helper_crtc_duplicate_state(struct 
drm_crtc *crtc,
        state->zpos_changed = false;
        state->commit = NULL;
        state->event = NULL;
-       state->pageflip_flags = 0;
+       state->async_flip = false;
 
        /* Self refresh should be canceled when a new update is available */
        state->active = drm_atomic_crtc_effectively_active(state);
diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.c 
b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
index 2db029371c91..5193b6257061 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/wndw.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
@@ -267,7 +267,7 @@ nv50_wndw_atomic_check_acquire(struct nv50_wndw *wndw, bool 
modeset,
                        asyw->image.pitch[0] = fb->base.pitches[0];
                }
 
-               if (!(asyh->state.pageflip_flags & DRM_MODE_PAGE_FLIP_ASYNC))
+               if (!asyh->state.async_flip)
                        asyw->image.interval = 1;
                else
                        asyw->image.interval = 0;
@@ -383,7 +383,7 @@ nv50_wndw_atomic_check_lut(struct nv50_wndw *wndw,
        }
 
        /* Can't do an immediate flip while changing the LUT. */
-       asyh->state.pageflip_flags &= ~DRM_MODE_PAGE_FLIP_ASYNC;
+       asyh->state.async_flip = false;
 }
 
 static int
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 7d14c11bdc0a..c4528eb5d168 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -285,12 +285,12 @@ struct drm_crtc_state {
        u32 target_vblank;
 
        /**
-        * @pageflip_flags:
+        * @async_flip:
         *
-        * DRM_MODE_PAGE_FLIP_* flags, as passed to the page flip ioctl.
-        * Zero in any other case.
+        * This is set when DRM_MODE_PAGE_FLIP_ASYNC is set in the legacy
+        * PAGE_FLIP IOCTL. It's not wired up for the atomic IOCTL itself yet.
         */
-       u32 pageflip_flags;
+       bool async_flip;
 
        /**
         * @vrr_enabled:
-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to