diff options
author | Erik Kurzinger <ekurzinger@nvidia.com> | 2022-08-16 11:54:48 -0700 |
---|---|---|
committer | Erik Kurzinger <ekurzinger@nvidia.com> | 2024-03-22 08:09:59 -0700 |
commit | bf661c1c34afb32d8c73b471c17c5bc5912fb346 (patch) | |
tree | dd6bcc682d3dde366b94020be2d6bfef7f896ffd | |
parent | db56b508f25629ab1022038131758ce48e6daf82 (diff) |
DRI3: add DRI3ImportSyncobj and DRI3FreeSyncobj
Adds new protocol to the DRI3 extension for importing DRM
synchronization objects provided by clients. These can be used to enable
explicit synchronization between the client, the direct rendering
device, and the server.
Signed-off-by: Erik Kurzinger <ekurzinger@nvidia.com>
-rw-r--r-- | dri3proto.pc.in | 2 | ||||
-rw-r--r-- | dri3proto.txt | 52 | ||||
-rw-r--r-- | include/X11/extensions/dri3proto.h | 28 |
3 files changed, 77 insertions, 5 deletions
diff --git a/dri3proto.pc.in b/dri3proto.pc.in index 7725bc5..be6ccb9 100644 --- a/dri3proto.pc.in +++ b/dri3proto.pc.in @@ -3,5 +3,5 @@ includedir=@includedir@ Name: DRI3Proto Description: DRI3 extension headers -Version: 1.3 +Version: 1.4 Cflags: -I${includedir} diff --git a/dri3proto.txt b/dri3proto.txt index 3f92756..f1f74c4 100644 --- a/dri3proto.txt +++ b/dri3proto.txt @@ -1,5 +1,5 @@ The DRI3 Extension - Version 1.3 + Version 1.4 2021-11-30 Keith Packard @@ -60,7 +60,7 @@ DRI3 defines no events. 6. Protocol Types -DRI3 defines no new protocol types. +SYNCOBJ { XID } ❄ ❄ ❄ ❄ ❄ ❄ ❄ @@ -395,6 +395,36 @@ The name of this extension is "DRI3" 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. + ❄ ❄ ❄ ❄ ❄ ❄ ❄ 9. Extension Events @@ -703,6 +733,24 @@ A.2 Protocol Requests 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. diff --git a/include/X11/extensions/dri3proto.h b/include/X11/extensions/dri3proto.h index 9cba105..a1fbed5 100644 --- a/include/X11/extensions/dri3proto.h +++ b/include/X11/extensions/dri3proto.h @@ -25,7 +25,7 @@ #define DRI3_NAME "DRI3" #define DRI3_MAJOR 1 -#define DRI3_MINOR 3 +#define DRI3_MINOR 4 #define DRI3NumberErrors 0 #define DRI3NumberEvents 0 @@ -45,7 +45,13 @@ /* v1.3 */ #define xDRI3SetDRMDeviceInUse 9 -#define DRI3NumberRequests 10 +/* v1.4 */ +#define xDRI3ImportSyncobj 10 +#define xDRI3FreeSyncobj 11 + +#define DRI3NumberRequests 12 + +#define DRI3Syncobj CARD32 typedef struct { CARD8 reqType; @@ -261,4 +267,22 @@ typedef struct { } 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 |