summaryrefslogtreecommitdiff
path: root/include/X11
diff options
context:
space:
mode:
authorErik Kurzinger <ekurzinger@nvidia.com>2022-08-16 11:55:43 -0700
committerErik Kurzinger <ekurzinger@nvidia.com>2024-03-25 06:56:52 -0700
commit62323c75c8876d302b85c8d90c72e8ae3b23d068 (patch)
treeff0b0e6dcf53fdea1b810db66b268af0b337d928 /include/X11
parentbf661c1c34afb32d8c73b471c17c5bc5912fb346 (diff)
Present: add PresentPixmapSynced
Adds an augmented version of PresentPixmap supporting explicit synchronization with a direct rendering device. This takes the form of timeline DRM synchronization objects, along with acquire and release points on those timelines. Implementations advertising PresentCapabilitySyncobj will wait for the acquire point to be signaled before executing the PresentPixmap request, and signal the release point after any GPU operations on the pixmap have completed. Signed-off-by: Erik Kurzinger <ekurzinger@nvidia.com>
Diffstat (limited to 'include/X11')
-rw-r--r--include/X11/extensions/presentproto.h32
-rw-r--r--include/X11/extensions/presenttokens.h9
2 files changed, 38 insertions, 3 deletions
diff --git a/include/X11/extensions/presentproto.h b/include/X11/extensions/presentproto.h
index d8dc6d2..ea80863 100644
--- a/include/X11/extensions/presentproto.h
+++ b/include/X11/extensions/presentproto.h
@@ -24,6 +24,7 @@
#define _PRESENT_PROTO_H_
#include <X11/extensions/presenttokens.h>
+#include <X11/extensions/dri3proto.h>
#define Window CARD32
#define Pixmap CARD32
@@ -136,6 +137,37 @@ typedef struct {
} xPresentQueryCapabilitiesReply;
#define sz_xPresentQueryCapabilitiesReply 32
+typedef struct {
+ CARD8 reqType;
+ CARD8 presentReqType;
+ CARD16 length;
+ Window window;
+
+ Pixmap pixmap;
+ CARD32 serial;
+
+ Region valid;
+ Region update;
+
+ INT16 x_off;
+ INT16 y_off;
+ CARD32 target_crtc;
+
+ DRI3Syncobj acquire_syncobj;
+ DRI3Syncobj release_syncobj;
+ CARD64 acquire_point;
+ CARD64 release_point;
+
+ CARD32 options;
+ CARD32 pad1;
+
+ CARD64 target_msc;
+ CARD64 divisor;
+ CARD64 remainder;
+ /* followed by a LISTofPRESENTNOTIFY */
+} xPresentPixmapSyncedReq;
+#define sz_xPresentPixmapSyncedReq 88
+
/*
* Events
*
diff --git a/include/X11/extensions/presenttokens.h b/include/X11/extensions/presenttokens.h
index 400e84d..8004625 100644
--- a/include/X11/extensions/presenttokens.h
+++ b/include/X11/extensions/presenttokens.h
@@ -25,7 +25,7 @@
#define PRESENT_NAME "Present"
#define PRESENT_MAJOR 1
-#define PRESENT_MINOR 3
+#define PRESENT_MINOR 4
#define PresentNumberErrors 0
#define PresentNumberEvents 0
@@ -36,8 +36,9 @@
#define X_PresentNotifyMSC 2
#define X_PresentSelectInput 3
#define X_PresentQueryCapabilities 4
+#define X_PresentPixmapSynced 5
-#define PresentNumberRequests 5
+#define PresentNumberRequests 6
/* Present operation options */
#define PresentOptionNone 0
@@ -62,11 +63,13 @@
#define PresentCapabilityFence 2
#define PresentCapabilityUST 4
#define PresentCapabilityAsyncMayTear 8
+#define PresentCapabilitySyncobj 16
#define PresentAllCapabilities (PresentCapabilityAsync | \
PresentCapabilityFence | \
PresentCapabilityUST | \
- PresentCapabilityAsyncMayTear)
+ PresentCapabilityAsyncMayTear | \
+ PresentCapabilitySyncobj)
#define PresentAllAsyncCapabilities (PresentCapabilityAsync | PresentCapabilityAsyncMayTear)