From d079ee210726d2407fa9c8cf99555daf2d96023a Mon Sep 17 00:00:00 2001 From: James Jones Date: Fri, 12 Feb 2010 16:38:08 -0800 Subject: Initial Fence Sync support Defines the protocol for creation and basic management of binary state sync objects. The following operations are defined: -Creation -Destruction -Trigger -Reset Signed-off-by: James Jones Reviewed-by: Aaron Plattner Acked-by: Alan Coopersmith --- syncconst.h | 6 ++++-- syncproto.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/syncconst.h b/syncconst.h index 926b60c..3acc387 100644 --- a/syncconst.h +++ b/syncconst.h @@ -54,7 +54,7 @@ PERFORMANCE OF THIS SOFTWARE. #define SYNC_NAME "SYNC" #define SYNC_MAJOR_VERSION 3 -#define SYNC_MINOR_VERSION 0 +#define SYNC_MINOR_VERSION 1 #define XSyncCounterNotify 0 @@ -65,7 +65,8 @@ PERFORMANCE OF THIS SOFTWARE. #define XSyncBadCounter 0L #define XSyncBadAlarm 1L -#define XSyncNumberErrors (XSyncBadAlarm + 1) +#define XSyncBadFence 2L +#define XSyncNumberErrors (XSyncBadFence + 1) /* * Flags for Alarm Attributes @@ -172,6 +173,7 @@ typedef enum { typedef XID XSyncCounter; typedef XID XSyncAlarm; +typedef XID XSyncFence; typedef struct _XSyncValue { int hi; unsigned int lo; diff --git a/syncproto.h b/syncproto.h index 13b53d5..c38ea84 100644 --- a/syncproto.h +++ b/syncproto.h @@ -67,6 +67,10 @@ PERFORMANCE OF THIS SOFTWARE. #define X_SyncDestroyAlarm 11 #define X_SyncSetPriority 12 #define X_SyncGetPriority 13 +#define X_SyncCreateFence 14 +#define X_SyncTriggerFence 15 +#define X_SyncResetFence 16 +#define X_SyncDestroyFence 17 /* cover up types from sync.h to make sure they're the right size for * protocol packaging. These will be undef'ed after all the protocol @@ -74,6 +78,8 @@ PERFORMANCE OF THIS SOFTWARE. */ #define XSyncCounter CARD32 #define XSyncAlarm CARD32 +#define XSyncFence CARD32 +#define Drawable CARD32 /* * Initialize @@ -336,6 +342,54 @@ typedef struct { } xSyncGetPriorityReply; #define sz_xSyncGetPriorityReply 32 +/* + * Create Fence + */ +typedef struct _xSyncCreateFenceReq { + CARD8 reqType; + CARD8 syncReqType; + CARD16 length B16; + Drawable d B32; + XSyncFence fid B32; + BOOL initially_triggered; + CARD8 pad0; + CARD16 pad1; +} xSyncCreateFenceReq; +#define sz_xSyncCreateFenceReq 16 + +/* + * Put a fence object in the "triggered" state. + */ +typedef struct _xSyncTriggerFenceReq { + CARD8 reqType; + CARD8 syncReqType; + CARD16 length B16; + XSyncFence fid B32; +} xSyncTriggerFenceReq; +#define sz_xSyncTriggerFenceReq 8 + +/* + * Put a fence in the "untriggered" state. + */ +typedef struct _xSyncResetFenceReq { + CARD8 reqType; + CARD8 syncReqType; + CARD16 length B16; + XSyncFence fid B32; +} xSyncResetFenceReq; +#define sz_xSyncResetFenceReq 8 + +/* + * Destroy a fence object + */ +typedef struct _xSyncDestroyFenceReq { + CARD8 reqType; + CARD8 syncReqType; + CARD16 length B16; + XSyncFence fid B32; +} xSyncDestroyFenceReq; +#define sz_xSyncDestroyFenceReq 8 + /* * Events */ @@ -373,6 +427,8 @@ typedef struct _xSyncAlarmNotifyEvent { #undef XSyncCounter #undef XSyncAlarm +#undef XSyncFence +#undef Drawable #endif /* _SYNCPROTO_H_ */ -- cgit v1.2.3