5.9 KB、280行 生 Blame 履歴
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
35typedef struct {
36 Window window;
37 CARD32 serial;
38} xPresentNotify;
39#define sz_xPresentNotify 8
40
41typedef struct {
42 CARD8 reqType;
43 CARD8 presentReqType;
44 CARD16 length;
45 CARD32 majorVersion;
46 CARD32 minorVersion;
47} xPresentQueryVersionReq;
48#define sz_xPresentQueryVersionReq 12
49
50typedef 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
64typedef 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
93typedef 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
108typedef 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
118typedef struct {
119 CARD8 reqType;
120 CARD8 presentReqType;
121 CARD16 length;
122 CARD32 target;
123} xPresentQueryCapabilitiesReq;
124#define sz_xPresentQueryCapabilitiesReq 8
125
126typedef 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
140typedef 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
177typedef 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
199typedef 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
216typedef 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
232typedef 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