From c8dd94588d79dd427dfce9153efe17eaa8c03f1f Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Tue, 30 Mar 2021 14:45:14 +0800 Subject: [PATCH 1/2] dri3: introduce syncobj Signed-off-by: Qiang Yu --- dri3proto.txt | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/dri3proto.txt b/dri3proto.txt index 94322e7..8fe0a9c 100644 --- a/dri3proto.txt +++ b/dri3proto.txt @@ -1,5 +1,5 @@ The DRI3 Extension - Version 1.2 + Version 1.3 2018-02-28 Keith Packard @@ -39,6 +39,11 @@ Louis-Francis Ratté-Boulianne 2. Data Types +DRI3SYNCOBJ { XID } + + Defines a unique object for client and server synchronization. + On Linux, it's based on timeline DRM syncobj. + The DRI3 extension uses the RandR extension Provider data type to select among multiple GPUs on a single screen and the Sync extension fence object to provide graphics object synchronization. @@ -371,6 +376,29 @@ The name of this extension is "DRI3" For information on synchronization of buffer access between the client and the X server, please see section 12. +┌─── + DRI3SyncobjFromFD + drawable: DRAWABLE + syncobj: DRI3SYNCOBJ + fd: FD +└─── + Errors: IDchoice, Drawable + + Create an X11 object used to refer to a synchronization context. + Combined with a sequence number, it can refer to any task fence + in this context. + +┌─── + DRI3FDFromSyncobj + drawable: DRAWABLE + syncobj: DRI3SYNCOBJ + ▶ + fd: FD +└─── + Errors: IDchoice, Drawable, Match + + Given a DRI3 Syncobj, get a file descriptor from server which + can be converted to back implementation. ❄ ❄ ❄ ❄ ❄ ❄ ❄ From dc9f8525d467fec70529f9e21fec2d208512dbbd Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Tue, 30 Mar 2021 15:35:55 +0800 Subject: [PATCH 2/2] present: add PresentPixmap2 using syncobj for fence Signed-off-by: Qiang Yu --- presentproto.txt | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/presentproto.txt b/presentproto.txt index 4a8e043..42af05c 100644 --- a/presentproto.txt +++ b/presentproto.txt @@ -1,5 +1,5 @@ The Present Extension - Version 1.2 + Version 1.3 2018-02-26 Keith Packard @@ -338,6 +338,29 @@ The name of this extension is "Present" defined by the extension, but is expected to be on the order of milliseconds or less. +┌─── + PresentPixmap2 + window: WINDOW + pixmap: PIXMAP + serial: CARD32 + valid-area: REGION or None + update-area: REGION or None + x-off, y-off: INT16 + target-crtc: CRTC or None + wait-syncobj: DRI3SYNCOBJ + wait-point: CARD64 + idle-syncobj: DRI3SYNCOBJ + idle-point: CARD64 + options: SETofPRESENTOPTION + target-msc: CARD64 + divisor: CARD64 + remainder: CARD64 + notifies: LISTofPRESENTNOTIFY +└─── + Errors: Window, Pixmap, Match + + Same as PresentPixmap except use timelined syncobj as wait/idle + fence representation. 7.1 Requests proposed for a later Present extension version