[RFC dri3proto v3 01/11] Add DMA fences requests, bump to v1.2

Louis-Francis Ratté-Boulianne lfrb at collabora.com
Mon Nov 6 21:42:50 UTC 2017


DRI3 version 1.2 adds support for creating DMA fences and
retrieving the file descriptor backing one.

Signed-off-by: Daniel Stone <daniels at collabora.com>
Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb at collabora.com>
---
 configure.ac  |  2 +-
 dri3proto.h   | 45 ++++++++++++++++++++++++++++++++++++--
 dri3proto.txt | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 3 files changed, 111 insertions(+), 6 deletions(-)

diff --git a/configure.ac b/configure.ac
index e302a01..054c95d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
 AC_PREREQ([2.60])
-AC_INIT([DRI3Proto], [1.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
+AC_INIT([DRI3Proto], [1.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 
 # Require xorg-macros: XORG_DEFAULT_OPTIONS
diff --git a/dri3proto.h b/dri3proto.h
index 5f86f19..fcef6d3 100644
--- a/dri3proto.h
+++ b/dri3proto.h
@@ -25,7 +25,7 @@
 
 #define DRI3_NAME			"DRI3"
 #define DRI3_MAJOR			1
-#define DRI3_MINOR			1
+#define DRI3_MINOR			2
 
 #define DRI3NumberErrors		0
 #define DRI3NumberEvents		0
@@ -42,7 +42,11 @@
 #define xDRI3PixmapFromBuffers		7
 #define xDRI3BuffersFromPixmap		8
 
-#define DRI3NumberRequests		9
+/* v1.2 */
+#define xDRI3FenceFromDMAFenceFD        9
+#define xDRI3DMAFenceFDFromFrence       10
+
+#define DRI3NumberRequests		11
 
 typedef struct {
     CARD8   reqType;
@@ -246,4 +250,41 @@ typedef struct {
 } xDRI3BuffersFromPixmapReply;
 #define sz_xDRI3BuffersFromPixmapReply   32
 
+/* v1.2 */
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri3ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  fence B32;
+} xDRI3FenceFromDMAFenceFDReq;
+
+#define sz_xDRI3FenceFromDMAFenceFDReq  12
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri3ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  fence B32;
+} xDRI3DMAFenceFDFromFenceReq;
+
+#define sz_xDRI3DMAFenceFDFromFenceReq  12
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    CARD8   nfd;    /* Number of file descriptors returned (1) */
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  pad08 B32;
+    CARD32  pad12 B32;
+    CARD32  pad16 B32;
+    CARD32  pad20 B32;
+    CARD32  pad24 B32;
+    CARD32  pad28 B32;
+} xDRI3DMAFenceFDFromFenceReply;
+
+#define sz_xDRI3DMAFenceFDFromFenceReply   32
+
 #endif
diff --git a/dri3proto.txt b/dri3proto.txt
index 636c789..a9e9b14 100644
--- a/dri3proto.txt
+++ b/dri3proto.txt
@@ -1,6 +1,6 @@
 			  The DRI3 Extension
-			     Version 1.1
-			      2017-06-27
+			     Version 1.2
+			      2017-09-22
       
 			    Keith Packard
 			  keithp at keithp.com
@@ -320,7 +320,40 @@ The name of this extension is "DRI3"
 
 	If buffers cannot be exported from the the screen associated
 	with 'pixmap', a Match error is returned.
- 
+
+┌───
+    DRI3FenceFromDMAFenceFD
+	drawable: DRAWABLE
+	fence: FENCE
+	fd: FD
+└───
+	Errors: IDChoice, Drawable
+
+	Creates a Sync extension Fence that provides the regular Sync
+	extension semantics. The Fence will begin untriggered, and
+	become triggered when the underlying dma-fence FD signals.
+	The resulting Sync Fence is a one-shot, and may not be
+	manually triggered, reset, or reused until it is destroyed.
+	Details about the mechanism used with this file descriptor are
+	outside the scope of the DRI3 extension.
+
+┌───
+    DRI3DMAFenceFDFromFence
+	drawable: DRAWABLE
+	fence: FENCE
+      ▶
+	fd: FD
+└───
+	Errors: IDChoice, Drawable, Match
+
+	Given a Sync extension Fence originally created by the
+	DRI3FenceFromDMAFenceFD request, return the underlying
+	dma-fence FD to the client. Details about the mechanism used
+	with this file descriptor are outside the scope of the DRI3
+	extension. 'drawable' must be associated with a direct
+	rendering device that 'fence' can work with, otherwise a Match
+	error results.
+
 
 			     ❄ ❄ ❄  ❄  ❄ ❄ ❄ 
 
@@ -339,6 +372,8 @@ The DRI3 extension is adapted from the DRI2 extension.
 	1.1: Add GetSupportedModifiers,
 	     PixmapFromBuffers, and BuffersFromPixmap requests.
 
+	1.2: Add FenceFromDMAFenceFD and DMAFenceFDFromFence requests.
+
 			     ❄ ❄ ❄  ❄  ❄ ❄ ❄
 
 
@@ -565,6 +600,35 @@ A.2 Protocol Requests
 	4	ListOfCARD32		offsets[num_buffers]
 └───
 
+┌───
+    DRI3FenceFromDMAFenceFD
+	1	CARD8			major opcode
+	1	10			DRI3 opcode
+	2	4			length
+	4	Drawable		drawable
+	4	Fence			fence
+	4				unused
+
+	0	FD			fence fd
+└───
+
+┌───
+    DRI3DMAFenceFDFromFence
+	1	CARD8			major opcode
+	1	11			DRI3 opcode
+	2	3			length
+	4	Drawable		drawable
+	4	Fence			fence
+      ▶
+	1	1			Reply
+        1	1			nfd
+	2	CARD16			sequence number
+	4	0			reply length
+	24				unused
+
+	0	FD			fence fd
+└───
+
 A.3 Protocol Events
 
 The DRI3 extension defines no events.
-- 
2.13.0



More information about the xorg-devel mailing list