1 /* 2 * Copyright 2013 Keith Packard 3 * 4 * Permission to use, copy, modify, distribute, and sell this software and its 5 * documentation for any purpose is hereby granted without fee, provided that 6 * the above copyright notice appear in all copies and that both that copyright 7 * notice and this permission notice appear in supporting documentation, and 8 * that the name of the copyright holders not be used in advertising or 9 * publicity pertaining to distribution of the software without specific, 10 * written prior permission. The copyright holders make no representations 11 * about the suitability of this software for any purpose. It is provided "as 12 * is" without express or implied warranty. 13 * 14 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 16 * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR 17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 20 * OF THIS SOFTWARE. 21 */ 22 23 #ifndef _PRESENT_PROTO_H_ 24 #define _PRESENT_PROTO_H_ 25 26 #include <X11/extensions/presenttokens.h> 27 #include <X11/extensions/dri3proto.h> 28 29 #define Window CARD32 30 #define Pixmap CARD32 31 #define Region CARD32 32 #define XSyncFence CARD32 33 #define EventID CARD32 34 35 typedef struct { 36 Window window; 37 CARD32 serial; 38 } xPresentNotify; 39 #define sz_xPresentNotify 8 40 41 typedef struct { 42 CARD8 reqType; 43 CARD8 presentReqType; 44 CARD16 length; 45 CARD32 majorVersion; 46 CARD32 minorVersion; 47 } xPresentQueryVersionReq; 48 #define sz_xPresentQueryVersionReq 12 49 50 typedef struct { 51 BYTE type; /* X_Reply */ 52 BYTE pad1; 53 CARD16 sequenceNumber; 54 CARD32 length; 55 CARD32 majorVersion; 56 CARD32 minorVersion; 57 CARD32 pad2; 58 CARD32 pad3; 59 CARD32 pad4; 60 CARD32 pad5; 61 } xPresentQueryVersionReply; 62 #define sz_xPresentQueryVersionReply 32 63 64 typedef struct { 65 CARD8 reqType; 66 CARD8 presentReqType; 67 CARD16 length; 68 Window window; 69 70 Pixmap pixmap; 71 CARD32 serial; 72 73 Region valid; 74 Region update; 75 76 INT16 x_off; 77 INT16 y_off; 78 CARD32 target_crtc; 79 80 XSyncFence wait_fence; 81 XSyncFence idle_fence; 82 83 CARD32 options; 84 CARD32 pad1; 85 86 CARD64 target_msc; 87 CARD64 divisor; 88 CARD64 remainder; 89 /* followed by a LISTofPRESENTNOTIFY */ 90 } xPresentPixmapReq; 91 #define sz_xPresentPixmapReq 72 92 93 typedef struct { 94 CARD8 reqType; 95 CARD8 presentReqType; 96 CARD16 length; 97 Window window; 98 99 CARD32 serial; 100 CARD32 pad0; 101 102 CARD64 target_msc; 103 CARD64 divisor; 104 CARD64 remainder; 105 } xPresentNotifyMSCReq; 106 #define sz_xPresentNotifyMSCReq 40 107 108 typedef struct { 109 CARD8 reqType; 110 CARD8 presentReqType; 111 CARD16 length; 112 CARD32 eid; 113 CARD32 window; 114 CARD32 eventMask; 115 } xPresentSelectInputReq; 116 #define sz_xPresentSelectInputReq 16 117 118 typedef struct { 119 CARD8 reqType; 120 CARD8 presentReqType; 121 CARD16 length; 122 CARD32 target; 123 } xPresentQueryCapabilitiesReq; 124 #define sz_xPresentQueryCapabilitiesReq 8 125 126 typedef struct { 127 BYTE type; /* X_Reply */ 128 BYTE pad1; 129 CARD16 sequenceNumber; 130 CARD32 length; 131 CARD32 capabilities; 132 CARD32 pad3; 133 CARD32 pad4; 134 CARD32 pad5; 135 CARD32 pad6; 136 CARD32 pad7; 137 } xPresentQueryCapabilitiesReply; 138 #define sz_xPresentQueryCapabilitiesReply 32 139 140 typedef struct { 141 CARD8 reqType; 142 CARD8 presentReqType; 143 CARD16 length; 144 Window window; 145 146 Pixmap pixmap; 147 CARD32 serial; 148 149 Region valid; 150 Region update; 151 152 INT16 x_off; 153 INT16 y_off; 154 CARD32 target_crtc; 155 156 DRI3Syncobj acquire_syncobj; 157 DRI3Syncobj release_syncobj; 158 CARD64 acquire_point; 159 CARD64 release_point; 160 161 CARD32 options; 162 CARD32 pad1; 163 164 CARD64 target_msc; 165 CARD64 divisor; 166 CARD64 remainder; 167 /* followed by a LISTofPRESENTNOTIFY */ 168 } xPresentPixmapSyncedReq; 169 #define sz_xPresentPixmapSyncedReq 88 170 171 /* 172 * Events 173 * 174 * All Present events are X Generic Events 175 */ 176 177 typedef struct { 178 CARD8 type; 179 CARD8 extension; 180 CARD16 sequenceNumber; 181 CARD32 length; 182 CARD16 evtype; 183 CARD16 pad2; 184 CARD32 eid; 185 CARD32 window; 186 INT16 x; 187 INT16 y; 188 CARD16 width; 189 CARD16 height; 190 INT16 off_x; 191 INT16 off_y; 192 193 CARD16 pixmap_width; 194 CARD16 pixmap_height; 195 CARD32 pixmap_flags; 196 } xPresentConfigureNotify; 197 #define sz_xPresentConfigureNotify 40 198 199 typedef struct { 200 CARD8 type; 201 CARD8 extension; 202 CARD16 sequenceNumber; 203 CARD32 length; 204 CARD16 evtype; 205 CARD8 kind; 206 CARD8 mode; 207 CARD32 eid; 208 Window window; 209 CARD32 serial; 210 CARD64 ust; 211 212 CARD64 msc; 213 } xPresentCompleteNotify; 214 #define sz_xPresentCompleteNotify 40 215 216 typedef struct { 217 CARD8 type; 218 CARD8 extension; 219 CARD16 sequenceNumber; 220 CARD32 length; 221 CARD16 evtype; 222 CARD16 pad2; 223 CARD32 eid; 224 Window window; 225 CARD32 serial; 226 Pixmap pixmap; 227 CARD32 idle_fence; 228 } xPresentIdleNotify; 229 #define sz_xPresentIdleNotify 32 230 231 #if PRESENT_FUTURE_VERSION 232 typedef struct { 233 CARD8 type; 234 CARD8 extension; 235 CARD16 sequenceNumber; 236 CARD32 length; 237 CARD16 evtype; 238 CARD8 update_window; 239 CARD8 pad1; 240 CARD32 eid; 241 Window event_window; 242 Window window; 243 Pixmap pixmap; 244 CARD32 serial; 245 246 /* 32-byte boundary */ 247 248 Region valid_region; 249 Region update_region; 250 251 xRectangle valid_rect; 252 253 xRectangle update_rect; 254 255 INT16 x_off; 256 INT16 y_off; 257 CARD32 target_crtc; 258 259 XSyncFence wait_fence; 260 XSyncFence idle_fence; 261 262 CARD32 options; 263 CARD32 pad2; 264 265 CARD64 target_msc; 266 CARD64 divisor; 267 CARD64 remainder; 268 269 } xPresentRedirectNotify; 270 271 #define sz_xPresentRedirectNotify 104 272 #endif 273 274 #undef Window 275 #undef Pixmap 276 #undef Region 277 #undef XSyncFence 278 #undef EventID 279 280 #endif 281