From b79a809d29cf9a5cf0715e59e5f0ce0a2dcc410b Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 8 Oct 2013 16:16:21 -0700 Subject: Add FDFromFence request This lets DRI clients convert a fence back into a local object. Signed-off-by: Keith Packard --- dri3proto.h | 28 +++++++++++++++++++++++++++- dri3proto.txt | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/dri3proto.h b/dri3proto.h index 02ea929..ceddee8 100644 --- a/dri3proto.h +++ b/dri3proto.h @@ -35,8 +35,9 @@ #define X_DRI3PixmapFromBuffer 2 #define X_DRI3BufferFromPixmap 3 #define X_DRI3FenceFromFD 4 +#define X_DRI3FDFromFence 5 -#define DRI3NumberRequests 5 +#define DRI3NumberRequests 6 typedef struct { CARD8 reqType; @@ -138,4 +139,29 @@ typedef struct { #define sz_xDRI3FenceFromFDReq 16 +typedef struct { + CARD8 reqType; + CARD8 dri3ReqType; + CARD16 length B16; + CARD32 drawable B32; + CARD32 fence B32; +} xDRI3FDFromFenceReq; + +#define sz_xDRI3FDFromFenceReq 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; +} xDRI3FDFromFenceReply; + +#define sz_xDRI3FDFromFenceReply 32 + #endif diff --git a/dri3proto.txt b/dri3proto.txt index fbc0fed..3f516f7 100644 --- a/dri3proto.txt +++ b/dri3proto.txt @@ -182,6 +182,23 @@ The name of this extension is "DRI3" Details about the mechanism used with this file descriptor are outside the scope of the DRI3 extension. +┌─── + DRI3FDFromFence + drawable: DRAWABLE + fence: FENCE + ▶ + fd: FD +└─── + Errors: IDchoice, Drawable, Match + + Given a Sync extension Fence that provides the regular Sync + extension semantics, returns a file descriptor that provides a + device-specific mechanism to manipulate the fence directly. + 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. + ❄ ❄ ❄ ❄ ❄ ❄ ❄ @@ -337,6 +354,23 @@ A.2 Protocol Requests 0 FD fence fd └─── +┌─── + DRI3FDFromFence + 1 CARD8 major opcode + 1 5 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. -- cgit v1.2.3