File n_dri3proto-1.4-2024.1.patch of Package dri3proto
Index: dri3proto-1.0/dri3proto.h
===================================================================
--- dri3proto-1.0.orig/dri3proto.h
+++ dri3proto-1.0/dri3proto.h
@@ -25,7 +25,7 @@
#define DRI3_NAME "DRI3"
#define DRI3_MAJOR 1
-#define DRI3_MINOR 2
+#define DRI3_MINOR 4
#define DRI3NumberErrors 0
#define DRI3NumberEvents 0
@@ -42,64 +42,73 @@
#define xDRI3PixmapFromBuffers 7
#define xDRI3BuffersFromPixmap 8
-#define DRI3NumberRequests 9
+/* v1.3 */
+#define xDRI3SetDRMDeviceInUse 9
+
+/* v1.4 */
+#define xDRI3ImportSyncobj 10
+#define xDRI3FreeSyncobj 11
+
+#define DRI3NumberRequests 12
+
+#define DRI3Syncobj CARD32
typedef struct {
CARD8 reqType;
CARD8 dri3ReqType;
- CARD16 length B16;
- CARD32 majorVersion B32;
- CARD32 minorVersion B32;
+ CARD16 length;
+ CARD32 majorVersion;
+ CARD32 minorVersion;
} xDRI3QueryVersionReq;
#define sz_xDRI3QueryVersionReq 12
typedef struct {
BYTE type; /* X_Reply */
BYTE pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 majorVersion B32;
- CARD32 minorVersion B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
+ CARD16 sequenceNumber;
+ CARD32 length;
+ CARD32 majorVersion;
+ CARD32 minorVersion;
+ CARD32 pad2;
+ CARD32 pad3;
+ CARD32 pad4;
+ CARD32 pad5;
} xDRI3QueryVersionReply;
#define sz_xDRI3QueryVersionReply 32
typedef struct {
CARD8 reqType;
CARD8 dri3ReqType;
- CARD16 length B16;
- CARD32 drawable B32;
- CARD32 provider B32;
+ CARD16 length;
+ CARD32 drawable;
+ CARD32 provider;
} xDRI3OpenReq;
#define sz_xDRI3OpenReq 12
typedef struct {
BYTE type; /* X_Reply */
CARD8 nfd;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
- CARD32 pad7 B32;
+ CARD16 sequenceNumber;
+ CARD32 length;
+ CARD32 pad2;
+ CARD32 pad3;
+ CARD32 pad4;
+ CARD32 pad5;
+ CARD32 pad6;
+ CARD32 pad7;
} xDRI3OpenReply;
#define sz_xDRI3OpenReply 32
typedef struct {
CARD8 reqType;
CARD8 dri3ReqType;
- CARD16 length B16;
- CARD32 pixmap B32;
- CARD32 drawable B32;
- CARD32 size B32;
- CARD16 width B16;
- CARD16 height B16;
- CARD16 stride B16;
+ CARD16 length;
+ CARD32 pixmap;
+ CARD32 drawable;
+ CARD32 size;
+ CARD16 width;
+ CARD16 height;
+ CARD16 stride;
CARD8 depth;
CARD8 bpp;
} xDRI3PixmapFromBufferReq;
@@ -109,37 +118,37 @@ typedef struct {
typedef struct {
CARD8 reqType;
CARD8 dri3ReqType;
- CARD16 length B16;
- CARD32 pixmap B32;
+ CARD16 length;
+ CARD32 pixmap;
} xDRI3BufferFromPixmapReq;
#define sz_xDRI3BufferFromPixmapReq 8
typedef struct {
BYTE type; /* X_Reply */
CARD8 nfd; /* Number of file descriptors returned (1) */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 size B32;
- CARD16 width B16;
- CARD16 height B16;
- CARD16 stride B16;
+ CARD16 sequenceNumber;
+ CARD32 length;
+ CARD32 size;
+ CARD16 width;
+ CARD16 height;
+ CARD16 stride;
CARD8 depth;
CARD8 bpp;
- CARD32 pad20 B32;
- CARD32 pad24 B32;
- CARD32 pad28 B32;
+ CARD32 pad20;
+ CARD32 pad24;
+ CARD32 pad28;
} xDRI3BufferFromPixmapReply;
#define sz_xDRI3BufferFromPixmapReply 32
typedef struct {
CARD8 reqType;
CARD8 dri3ReqType;
- CARD16 length B16;
- CARD32 drawable B32;
- CARD32 fence B32;
+ CARD16 length;
+ CARD32 drawable;
+ CARD32 fence;
BOOL initially_triggered;
CARD8 pad13;
- CARD16 pad14 B16;
+ CARD16 pad14;
} xDRI3FenceFromFDReq;
#define sz_xDRI3FenceFromFDReq 16
@@ -147,9 +156,9 @@ typedef struct {
typedef struct {
CARD8 reqType;
CARD8 dri3ReqType;
- CARD16 length B16;
- CARD32 drawable B32;
- CARD32 fence B32;
+ CARD16 length;
+ CARD32 drawable;
+ CARD32 fence;
} xDRI3FDFromFenceReq;
#define sz_xDRI3FDFromFenceReq 12
@@ -157,14 +166,14 @@ typedef struct {
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;
+ CARD16 sequenceNumber;
+ CARD32 length;
+ CARD32 pad08;
+ CARD32 pad12;
+ CARD32 pad16;
+ CARD32 pad20;
+ CARD32 pad24;
+ CARD32 pad28;
} xDRI3FDFromFenceReply;
#define sz_xDRI3FDFromFenceReply 32
@@ -174,50 +183,50 @@ typedef struct {
typedef struct {
CARD8 reqType;
CARD8 dri3ReqType;
- CARD16 length B16;
- CARD32 window B32;
+ CARD16 length;
+ CARD32 window;
CARD8 depth;
CARD8 bpp;
- CARD16 pad10 B16;
+ CARD16 pad10;
} xDRI3GetSupportedModifiersReq;
#define sz_xDRI3GetSupportedModifiersReq 12
typedef struct {
BYTE type; /* X_Reply */
CARD8 pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 numWindowModifiers B32;
- CARD32 numScreenModifiers B32;
- CARD32 pad16 B32;
- CARD32 pad20 B32;
- CARD32 pad24 B32;
- CARD32 pad28 B32;
+ CARD16 sequenceNumber;
+ CARD32 length;
+ CARD32 numWindowModifiers;
+ CARD32 numScreenModifiers;
+ CARD32 pad16;
+ CARD32 pad20;
+ CARD32 pad24;
+ CARD32 pad28;
} xDRI3GetSupportedModifiersReply;
#define sz_xDRI3GetSupportedModifiersReply 32
typedef struct {
CARD8 reqType;
CARD8 dri3ReqType;
- CARD16 length B16;
- CARD32 pixmap B32;
- CARD32 window B32;
+ CARD16 length;
+ CARD32 pixmap;
+ CARD32 window;
CARD8 num_buffers; /* Number of file descriptors passed */
CARD8 pad13;
- CARD16 pad14 B16;
- CARD16 width B16;
- CARD16 height B16;
- CARD32 stride0 B32;
- CARD32 offset0 B32;
- CARD32 stride1 B32;
- CARD32 offset1 B32;
- CARD32 stride2 B32;
- CARD32 offset2 B32;
- CARD32 stride3 B32;
- CARD32 offset3 B32;
+ CARD16 pad14;
+ CARD16 width;
+ CARD16 height;
+ CARD32 stride0;
+ CARD32 offset0;
+ CARD32 stride1;
+ CARD32 offset1;
+ CARD32 stride2;
+ CARD32 offset2;
+ CARD32 stride3;
+ CARD32 offset3;
CARD8 depth;
CARD8 bpp;
- CARD16 pad54 B16;
+ CARD16 pad54;
CARD64 modifier;
} xDRI3PixmapFromBuffersReq;
#define sz_xDRI3PixmapFromBuffersReq 64
@@ -225,25 +234,55 @@ typedef struct {
typedef struct {
CARD8 reqType;
CARD8 dri3ReqType;
- CARD16 length B16;
- CARD32 pixmap B32;
+ CARD16 length;
+ CARD32 pixmap;
} xDRI3BuffersFromPixmapReq;
#define sz_xDRI3BuffersFromPixmapReq 8
typedef struct {
BYTE type; /* X_Reply */
CARD8 nfd; /* Number of file descriptors returned */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 width B16;
- CARD16 height B16;
- CARD32 pad12 B32;
+ CARD16 sequenceNumber;
+ CARD32 length;
+ CARD16 width;
+ CARD16 height;
+ CARD32 pad12;
CARD64 modifier;
CARD8 depth;
CARD8 bpp;
- CARD16 pad26 B16;
- CARD32 pad28 B32;
+ CARD16 pad26;
+ CARD32 pad28;
} xDRI3BuffersFromPixmapReply;
#define sz_xDRI3BuffersFromPixmapReply 32
+/* v1.3 */
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 dri3ReqType;
+ CARD16 length;
+ CARD32 window;
+ CARD32 drmMajor;
+ CARD32 drmMinor;
+} xDRI3SetDRMDeviceInUseReq;
+#define sz_xDRI3SetDRMDeviceInUseReq 16
+
+/* v1.4 */
+typedef struct {
+ CARD8 reqType;
+ CARD8 dri3ReqType;
+ CARD16 length;
+ DRI3Syncobj syncobj;
+ CARD32 drawable;
+} xDRI3ImportSyncobjReq;
+#define sz_xDRI3ImportSyncobjReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 dri3ReqType;
+ CARD16 length;
+ DRI3Syncobj syncobj;
+} xDRI3FreeSyncobjReq;
+#define sz_xDRI3FreeSyncobjReq 8
+
#endif
Index: dri3proto-1.0/dri3proto.pc.in
===================================================================
--- dri3proto-1.0.orig/dri3proto.pc.in
+++ dri3proto-1.0/dri3proto.pc.in
@@ -1,9 +1,7 @@
prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
includedir=@includedir@
Name: DRI3Proto
Description: DRI3 extension headers
-Version: 1.2
+Version: 1.4
Cflags: -I${includedir}
Index: dri3proto-1.0/dri3proto.txt
===================================================================
--- dri3proto-1.0.orig/dri3proto.txt
+++ dri3proto-1.0/dri3proto.txt
@@ -1,6 +1,6 @@
The DRI3 Extension
- Version 1.2
- 2018-02-28
+ Version 1.4
+ 2021-11-30
Keith Packard
keithp@keithp.com
@@ -34,6 +34,7 @@ Kristian Høgsberg <krh@bitplanet.net>
James Jones <jajones@nvidia.com>
Arthur Huillet <arthur.huillet@free.fr>
Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
+Austin Shafer <ashafer@nvidia.com>
❄ ❄ ❄ ❄ ❄ ❄ ❄
@@ -59,7 +60,7 @@ DRI3 defines no events.
6. Protocol Types
-DRI3 defines no new protocol types.
+SYNCOBJ { XID }
❄ ❄ ❄ ❄ ❄ ❄ ❄
@@ -371,6 +372,58 @@ 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.
+┌───
+ DRI3SetDRMDeviceInUse
+ window: WINDOW
+ drmMajor: CARD32
+ drmMinor: CARD32
+└───
+ Errors: Window
+
+ This request provides a hint to the server about the device
+ in use by this window. This is used to provide
+ DRI3GetSupportedModifiers with a hint of what device to
+ return modifiers for in the window_modifiers return value.
+ Using this hint allows for device-specific modifiers to
+ be returned by DRI3GetSupportedModifiers, for example
+ when an application is renderoffloaded and eligible for
+ direct scanout.
+
+ This is only a hint, and may or may not be reflected in
+ the modifier list returned.
+
+ If the window specified was not found, a Window error will
+ be returned.
+
+
+┌───
+ DRI3ImportSyncobj
+ syncobj: SYNCOBJ
+ drawable: DRAWABLE
+ fd: FD
+└───
+ Errors: IDchoice, Drawable
+
+ Imports the DRM synchronization object bound to the given 'fd'. This
+ may then be used to enable explicit synchronization with the
+ server-side direct rendering device associated with 'drawable'.
+
+ The provided syncobj must be a timeline syncobj.
+
+ If 'drawable' is not found, a Drawable error will be returned.
+
+
+┌───
+ DRI3FreeSyncobj
+ syncobj: SYNCOBJ
+└───
+ Errors: Value
+
+ Indicates that any resources associated with the given 'syncobj' should
+ be released by the server. The actual release may be deferred until any
+ pending operations that depend on the object have completed.
+
+ If 'syncobj' is not found, a Value error will be returned.
❄ ❄ ❄ ❄ ❄ ❄ ❄
@@ -391,6 +444,8 @@ The DRI3 extension is adapted from the D
1.2: Add GetSupportedModifiers,
PixmapFromBuffers, and BuffersFromPixmap requests.
+ 1.3: Add SetDRMDeviceInUse
+
❄ ❄ ❄ ❄ ❄ ❄ ❄
@@ -598,7 +653,7 @@ A.2 Protocol Requests
┌───
DRI3GetSupportedModifiers
1 CARD8 major opcode
- 1 7 DRI3 opcode
+ 1 6 DRI3 opcode
2 3 length
4 Window window
1 CARD8 depth
@@ -620,7 +675,7 @@ A.2 Protocol Requests
┌───
DRI3PixmapFromBuffers
1 CARD8 major opcode
- 1 8 DRI3 opcode
+ 1 7 DRI3 opcode
2 8 length
4 Pixmap pixmap
4 Window window
@@ -647,7 +702,7 @@ A.2 Protocol Requests
┌───
DRI3BuffersFromPixmap
1 CARD8 major opcode
- 1 9 DRI3 opcode
+ 1 8 DRI3 opcode
2 2 length
4 Pixmap pixmap
▶
@@ -668,6 +723,34 @@ A.2 Protocol Requests
4 ListOfCARD32 offsets[nfd]
└───
+┌───
+ DRI3SetDRMDeviceInUse
+ 1 CARD8 major opcode
+ 1 9 DRI3 opcode
+ 2 4 length
+ 4 Window window
+ 4 CARD32 drmMajor
+ 4 CARD32 drmMinor
+└───
+
+┌───
+ DRI3ImportSyncobj
+ 1 CARD8 major opcode
+ 1 11 DRI3 opcode
+ 2 3 length
+ 4 SYNCOBJ syncobj
+ 4 Drawable drawable
+ 0 FD syncobj fd
+└───
+
+┌───
+ DRI3FreeSyncobj
+ 1 CARD8 major opcode
+ 1 12 DRI3 opcode
+ 2 2 length
+ 4 SYNCOBJ syncobj
+└───
+
A.3 Protocol Events
The DRI3 extension defines no events.