[PATCH 10/19] present: Add present_window_priv properties for window flip mode

Roman Gilg subdiff at gmail.com
Mon Jan 29 13:34:08 UTC 2018


For window flip mode data about flips needs to be stored per window.
Add properties to 'present_window_priv' and initialize them on creation.

Signed-off-by: Roman Gilg <subdiff at gmail.com>
---
 present/present_priv.h   | 11 +++++++++++
 present/present_screen.c |  6 ++++++
 2 files changed, 17 insertions(+)

diff --git a/present/present_priv.h b/present/present_priv.h
index b242e96..a071941 100644
--- a/present/present_priv.h
+++ b/present/present_priv.h
@@ -201,12 +201,23 @@ typedef struct present_event {
 } present_event_rec;
 
 typedef struct present_window_priv {
+    WindowPtr              window;
     present_event_ptr      events;
     RRCrtcPtr              crtc;        /* Last reported CRTC from get_ust_msc */
     uint64_t               msc_offset;
     uint64_t               msc;         /* Last reported MSC from the current crtc */
     struct xorg_list       vblank;
     struct xorg_list       notifies;
+
+    /* Used for window flips */
+    uint64_t               event_id;
+    struct xorg_list       exec_queue;
+    struct xorg_list       flip_queue;
+    struct xorg_list       idle_queue;
+
+    present_vblank_ptr     flip_pending;
+    present_vblank_ptr     flip_active;
+    uint64_t               unflip_event_id;
 } present_window_priv_rec, *present_window_priv_ptr;
 
 #define PresentCrtcNeverSet     ((RRCrtcPtr) 1)
diff --git a/present/present_screen.c b/present/present_screen.c
index 868eaf8..d6c9a5e 100644
--- a/present/present_screen.c
+++ b/present/present_screen.c
@@ -45,6 +45,12 @@ present_get_window_priv(WindowPtr window, Bool create)
         return NULL;
     xorg_list_init(&window_priv->vblank);
     xorg_list_init(&window_priv->notifies);
+
+    xorg_list_init(&window_priv->exec_queue);
+    xorg_list_init(&window_priv->flip_queue);
+    xorg_list_init(&window_priv->idle_queue);
+
+    window_priv->window = window;
     window_priv->crtc = PresentCrtcNeverSet;
     dixSetPrivate(&window->devPrivates, &present_window_private_key, window_priv);
     return window_priv;
-- 
2.7.4



More information about the xorg-devel mailing list