1 /*
2 * This file generated automatically from dri2.xml by c_client.py.
3 * Edit at your peril.
4 */
5
6 #ifdef HAVE_CONFIG_H
7 #include "config.h"
8 #endif
9 #include <stdlib.h>
10 #include <string.h>
11 #include <assert.h>
12 #include <stddef.h> /* for offsetof() */
13 #include "xcbext.h"
14 #include "dri2.h"
15
16 #define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
17 #include "xproto.h"
18
19 xcb_extension_t xcb_dri2_id = { "DRI2", 0 };
20
21 void
xcb_dri2_dri2_buffer_next(xcb_dri2_dri2_buffer_iterator_t * i)22 xcb_dri2_dri2_buffer_next (xcb_dri2_dri2_buffer_iterator_t *i /**< */)
23 {
24 --i->rem;
25 ++i->data;
26 i->index += sizeof(xcb_dri2_dri2_buffer_t);
27 }
28
29 xcb_generic_iterator_t
xcb_dri2_dri2_buffer_end(xcb_dri2_dri2_buffer_iterator_t i)30 xcb_dri2_dri2_buffer_end (xcb_dri2_dri2_buffer_iterator_t i /**< */)
31 {
32 xcb_generic_iterator_t ret;
33 ret.data = i.data + i.rem;
34 ret.index = i.index + ((char *) ret.data - (char *) i.data);
35 ret.rem = 0;
36 return ret;
37 }
38
39 void
xcb_dri2_attach_format_next(xcb_dri2_attach_format_iterator_t * i)40 xcb_dri2_attach_format_next (xcb_dri2_attach_format_iterator_t *i /**< */)
41 {
42 --i->rem;
43 ++i->data;
44 i->index += sizeof(xcb_dri2_attach_format_t);
45 }
46
47 xcb_generic_iterator_t
xcb_dri2_attach_format_end(xcb_dri2_attach_format_iterator_t i)48 xcb_dri2_attach_format_end (xcb_dri2_attach_format_iterator_t i /**< */)
49 {
50 xcb_generic_iterator_t ret;
51 ret.data = i.data + i.rem;
52 ret.index = i.index + ((char *) ret.data - (char *) i.data);
53 ret.rem = 0;
54 return ret;
55 }
56
57 xcb_dri2_query_version_cookie_t
xcb_dri2_query_version(xcb_connection_t * c,uint32_t major_version,uint32_t minor_version)58 xcb_dri2_query_version (xcb_connection_t *c /**< */,
59 uint32_t major_version /**< */,
60 uint32_t minor_version /**< */)
61 {
62 static const xcb_protocol_request_t xcb_req = {
63 /* count */ 2,
64 /* ext */ &xcb_dri2_id,
65 /* opcode */ XCB_DRI2_QUERY_VERSION,
66 /* isvoid */ 0
67 };
68
69 struct iovec xcb_parts[4];
70 xcb_dri2_query_version_cookie_t xcb_ret;
71 xcb_dri2_query_version_request_t xcb_out;
72
73 xcb_out.major_version = major_version;
74 xcb_out.minor_version = minor_version;
75
76 xcb_parts[2].iov_base = (char *) &xcb_out;
77 xcb_parts[2].iov_len = sizeof(xcb_out);
78 xcb_parts[3].iov_base = 0;
79 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
80
81 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
82 return xcb_ret;
83 }
84
85 xcb_dri2_query_version_cookie_t
xcb_dri2_query_version_unchecked(xcb_connection_t * c,uint32_t major_version,uint32_t minor_version)86 xcb_dri2_query_version_unchecked (xcb_connection_t *c /**< */,
87 uint32_t major_version /**< */,
88 uint32_t minor_version /**< */)
89 {
90 static const xcb_protocol_request_t xcb_req = {
91 /* count */ 2,
92 /* ext */ &xcb_dri2_id,
93 /* opcode */ XCB_DRI2_QUERY_VERSION,
94 /* isvoid */ 0
95 };
96
97 struct iovec xcb_parts[4];
98 xcb_dri2_query_version_cookie_t xcb_ret;
99 xcb_dri2_query_version_request_t xcb_out;
100
101 xcb_out.major_version = major_version;
102 xcb_out.minor_version = minor_version;
103
104 xcb_parts[2].iov_base = (char *) &xcb_out;
105 xcb_parts[2].iov_len = sizeof(xcb_out);
106 xcb_parts[3].iov_base = 0;
107 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
108
109 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
110 return xcb_ret;
111 }
112
113 xcb_dri2_query_version_reply_t *
xcb_dri2_query_version_reply(xcb_connection_t * c,xcb_dri2_query_version_cookie_t cookie,xcb_generic_error_t ** e)114 xcb_dri2_query_version_reply (xcb_connection_t *c /**< */,
115 xcb_dri2_query_version_cookie_t cookie /**< */,
116 xcb_generic_error_t **e /**< */)
117 {
118 return (xcb_dri2_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
119 }
120
121 int
xcb_dri2_connect_sizeof(const void * _buffer)122 xcb_dri2_connect_sizeof (const void *_buffer /**< */)
123 {
124 char *xcb_tmp = (char *)_buffer;
125 const xcb_dri2_connect_reply_t *_aux = (xcb_dri2_connect_reply_t *)_buffer;
126 unsigned int xcb_buffer_len = 0;
127 unsigned int xcb_block_len = 0;
128 unsigned int xcb_pad = 0;
129 unsigned int xcb_align_to = 0;
130
131
132 xcb_block_len += sizeof(xcb_dri2_connect_reply_t);
133 xcb_tmp += xcb_block_len;
134 xcb_buffer_len += xcb_block_len;
135 xcb_block_len = 0;
136 /* driver_name */
137 xcb_block_len += _aux->driver_name_length * sizeof(char);
138 xcb_tmp += xcb_block_len;
139 xcb_align_to = ALIGNOF(char);
140 /* insert padding */
141 xcb_pad = -xcb_block_len & (xcb_align_to - 1);
142 xcb_buffer_len += xcb_block_len + xcb_pad;
143 if (0 != xcb_pad) {
144 xcb_tmp += xcb_pad;
145 xcb_pad = 0;
146 }
147 xcb_block_len = 0;
148 /* alignment_pad */
149 xcb_block_len += (((_aux->driver_name_length + 3) & (~3)) - _aux->driver_name_length) * sizeof(char);
150 xcb_tmp += xcb_block_len;
151 xcb_align_to = ALIGNOF(char);
152 /* insert padding */
153 xcb_pad = -xcb_block_len & (xcb_align_to - 1);
154 xcb_buffer_len += xcb_block_len + xcb_pad;
155 if (0 != xcb_pad) {
156 xcb_tmp += xcb_pad;
157 xcb_pad = 0;
158 }
159 xcb_block_len = 0;
160 /* device_name */
161 xcb_block_len += _aux->device_name_length * sizeof(char);
162 xcb_tmp += xcb_block_len;
163 xcb_align_to = ALIGNOF(char);
164 /* insert padding */
165 xcb_pad = -xcb_block_len & (xcb_align_to - 1);
166 xcb_buffer_len += xcb_block_len + xcb_pad;
167 if (0 != xcb_pad) {
168 xcb_tmp += xcb_pad;
169 xcb_pad = 0;
170 }
171 xcb_block_len = 0;
172
173 return xcb_buffer_len;
174 }
175
176 xcb_dri2_connect_cookie_t
xcb_dri2_connect(xcb_connection_t * c,xcb_window_t window,uint32_t driver_type)177 xcb_dri2_connect (xcb_connection_t *c /**< */,
178 xcb_window_t window /**< */,
179 uint32_t driver_type /**< */)
180 {
181 static const xcb_protocol_request_t xcb_req = {
182 /* count */ 2,
183 /* ext */ &xcb_dri2_id,
184 /* opcode */ XCB_DRI2_CONNECT,
185 /* isvoid */ 0
186 };
187
188 struct iovec xcb_parts[4];
189 xcb_dri2_connect_cookie_t xcb_ret;
190 xcb_dri2_connect_request_t xcb_out;
191
192 xcb_out.window = window;
193 xcb_out.driver_type = driver_type;
194
195 xcb_parts[2].iov_base = (char *) &xcb_out;
196 xcb_parts[2].iov_len = sizeof(xcb_out);
197 xcb_parts[3].iov_base = 0;
198 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
199
200 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
201 return xcb_ret;
202 }
203
204 xcb_dri2_connect_cookie_t
xcb_dri2_connect_unchecked(xcb_connection_t * c,xcb_window_t window,uint32_t driver_type)205 xcb_dri2_connect_unchecked (xcb_connection_t *c /**< */,
206 xcb_window_t window /**< */,
207 uint32_t driver_type /**< */)
208 {
209 static const xcb_protocol_request_t xcb_req = {
210 /* count */ 2,
211 /* ext */ &xcb_dri2_id,
212 /* opcode */ XCB_DRI2_CONNECT,
213 /* isvoid */ 0
214 };
215
216 struct iovec xcb_parts[4];
217 xcb_dri2_connect_cookie_t xcb_ret;
218 xcb_dri2_connect_request_t xcb_out;
219
220 xcb_out.window = window;
221 xcb_out.driver_type = driver_type;
222
223 xcb_parts[2].iov_base = (char *) &xcb_out;
224 xcb_parts[2].iov_len = sizeof(xcb_out);
225 xcb_parts[3].iov_base = 0;
226 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
227
228 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
229 return xcb_ret;
230 }
231
232 char *
xcb_dri2_connect_driver_name(const xcb_dri2_connect_reply_t * R)233 xcb_dri2_connect_driver_name (const xcb_dri2_connect_reply_t *R /**< */)
234 {
235 return (char *) (R + 1);
236 }
237
238 int
xcb_dri2_connect_driver_name_length(const xcb_dri2_connect_reply_t * R)239 xcb_dri2_connect_driver_name_length (const xcb_dri2_connect_reply_t *R /**< */)
240 {
241 return R->driver_name_length;
242 }
243
244 xcb_generic_iterator_t
xcb_dri2_connect_driver_name_end(const xcb_dri2_connect_reply_t * R)245 xcb_dri2_connect_driver_name_end (const xcb_dri2_connect_reply_t *R /**< */)
246 {
247 xcb_generic_iterator_t i;
248 i.data = ((char *) (R + 1)) + (R->driver_name_length);
249 i.rem = 0;
250 i.index = (char *) i.data - (char *) R;
251 return i;
252 }
253
254 void *
xcb_dri2_connect_alignment_pad(const xcb_dri2_connect_reply_t * R)255 xcb_dri2_connect_alignment_pad (const xcb_dri2_connect_reply_t *R /**< */)
256 {
257 xcb_generic_iterator_t prev = xcb_dri2_connect_driver_name_end(R);
258 return (void *) ((char *) prev.data + XCB_TYPE_PAD(char, prev.index) + 0);
259 }
260
261 int
xcb_dri2_connect_alignment_pad_length(const xcb_dri2_connect_reply_t * R)262 xcb_dri2_connect_alignment_pad_length (const xcb_dri2_connect_reply_t *R /**< */)
263 {
264 return (((R->driver_name_length + 3) & (~3)) - R->driver_name_length);
265 }
266
267 xcb_generic_iterator_t
xcb_dri2_connect_alignment_pad_end(const xcb_dri2_connect_reply_t * R)268 xcb_dri2_connect_alignment_pad_end (const xcb_dri2_connect_reply_t *R /**< */)
269 {
270 xcb_generic_iterator_t i;
271 xcb_generic_iterator_t child = xcb_dri2_connect_driver_name_end(R);
272 i.data = ((char *) child.data) + ((((R->driver_name_length + 3) & (~3)) - R->driver_name_length));
273 i.rem = 0;
274 i.index = (char *) i.data - (char *) R;
275 return i;
276 }
277
278 char *
xcb_dri2_connect_device_name(const xcb_dri2_connect_reply_t * R)279 xcb_dri2_connect_device_name (const xcb_dri2_connect_reply_t *R /**< */)
280 {
281 xcb_generic_iterator_t prev = xcb_dri2_connect_alignment_pad_end(R);
282 return (char *) ((char *) prev.data + XCB_TYPE_PAD(char, prev.index) + 0);
283 }
284
285 int
xcb_dri2_connect_device_name_length(const xcb_dri2_connect_reply_t * R)286 xcb_dri2_connect_device_name_length (const xcb_dri2_connect_reply_t *R /**< */)
287 {
288 return R->device_name_length;
289 }
290
291 xcb_generic_iterator_t
xcb_dri2_connect_device_name_end(const xcb_dri2_connect_reply_t * R)292 xcb_dri2_connect_device_name_end (const xcb_dri2_connect_reply_t *R /**< */)
293 {
294 xcb_generic_iterator_t i;
295 xcb_generic_iterator_t child = xcb_dri2_connect_alignment_pad_end(R);
296 i.data = ((char *) child.data) + (R->device_name_length);
297 i.rem = 0;
298 i.index = (char *) i.data - (char *) R;
299 return i;
300 }
301
302 xcb_dri2_connect_reply_t *
xcb_dri2_connect_reply(xcb_connection_t * c,xcb_dri2_connect_cookie_t cookie,xcb_generic_error_t ** e)303 xcb_dri2_connect_reply (xcb_connection_t *c /**< */,
304 xcb_dri2_connect_cookie_t cookie /**< */,
305 xcb_generic_error_t **e /**< */)
306 {
307 return (xcb_dri2_connect_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
308 }
309
310 xcb_dri2_authenticate_cookie_t
xcb_dri2_authenticate(xcb_connection_t * c,xcb_window_t window,uint32_t magic)311 xcb_dri2_authenticate (xcb_connection_t *c /**< */,
312 xcb_window_t window /**< */,
313 uint32_t magic /**< */)
314 {
315 static const xcb_protocol_request_t xcb_req = {
316 /* count */ 2,
317 /* ext */ &xcb_dri2_id,
318 /* opcode */ XCB_DRI2_AUTHENTICATE,
319 /* isvoid */ 0
320 };
321
322 struct iovec xcb_parts[4];
323 xcb_dri2_authenticate_cookie_t xcb_ret;
324 xcb_dri2_authenticate_request_t xcb_out;
325
326 xcb_out.window = window;
327 xcb_out.magic = magic;
328
329 xcb_parts[2].iov_base = (char *) &xcb_out;
330 xcb_parts[2].iov_len = sizeof(xcb_out);
331 xcb_parts[3].iov_base = 0;
332 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
333
334 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
335 return xcb_ret;
336 }
337
338 xcb_dri2_authenticate_cookie_t
xcb_dri2_authenticate_unchecked(xcb_connection_t * c,xcb_window_t window,uint32_t magic)339 xcb_dri2_authenticate_unchecked (xcb_connection_t *c /**< */,
340 xcb_window_t window /**< */,
341 uint32_t magic /**< */)
342 {
343 static const xcb_protocol_request_t xcb_req = {
344 /* count */ 2,
345 /* ext */ &xcb_dri2_id,
346 /* opcode */ XCB_DRI2_AUTHENTICATE,
347 /* isvoid */ 0
348 };
349
350 struct iovec xcb_parts[4];
351 xcb_dri2_authenticate_cookie_t xcb_ret;
352 xcb_dri2_authenticate_request_t xcb_out;
353
354 xcb_out.window = window;
355 xcb_out.magic = magic;
356
357 xcb_parts[2].iov_base = (char *) &xcb_out;
358 xcb_parts[2].iov_len = sizeof(xcb_out);
359 xcb_parts[3].iov_base = 0;
360 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
361
362 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
363 return xcb_ret;
364 }
365
366 xcb_dri2_authenticate_reply_t *
xcb_dri2_authenticate_reply(xcb_connection_t * c,xcb_dri2_authenticate_cookie_t cookie,xcb_generic_error_t ** e)367 xcb_dri2_authenticate_reply (xcb_connection_t *c /**< */,
368 xcb_dri2_authenticate_cookie_t cookie /**< */,
369 xcb_generic_error_t **e /**< */)
370 {
371 return (xcb_dri2_authenticate_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
372 }
373
374 xcb_void_cookie_t
xcb_dri2_create_drawable_checked(xcb_connection_t * c,xcb_drawable_t drawable)375 xcb_dri2_create_drawable_checked (xcb_connection_t *c /**< */,
376 xcb_drawable_t drawable /**< */)
377 {
378 static const xcb_protocol_request_t xcb_req = {
379 /* count */ 2,
380 /* ext */ &xcb_dri2_id,
381 /* opcode */ XCB_DRI2_CREATE_DRAWABLE,
382 /* isvoid */ 1
383 };
384
385 struct iovec xcb_parts[4];
386 xcb_void_cookie_t xcb_ret;
387 xcb_dri2_create_drawable_request_t xcb_out;
388
389 xcb_out.drawable = drawable;
390
391 xcb_parts[2].iov_base = (char *) &xcb_out;
392 xcb_parts[2].iov_len = sizeof(xcb_out);
393 xcb_parts[3].iov_base = 0;
394 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
395
396 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
397 return xcb_ret;
398 }
399
400 xcb_void_cookie_t
xcb_dri2_create_drawable(xcb_connection_t * c,xcb_drawable_t drawable)401 xcb_dri2_create_drawable (xcb_connection_t *c /**< */,
402 xcb_drawable_t drawable /**< */)
403 {
404 static const xcb_protocol_request_t xcb_req = {
405 /* count */ 2,
406 /* ext */ &xcb_dri2_id,
407 /* opcode */ XCB_DRI2_CREATE_DRAWABLE,
408 /* isvoid */ 1
409 };
410
411 struct iovec xcb_parts[4];
412 xcb_void_cookie_t xcb_ret;
413 xcb_dri2_create_drawable_request_t xcb_out;
414
415 xcb_out.drawable = drawable;
416
417 xcb_parts[2].iov_base = (char *) &xcb_out;
418 xcb_parts[2].iov_len = sizeof(xcb_out);
419 xcb_parts[3].iov_base = 0;
420 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
421
422 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
423 return xcb_ret;
424 }
425
426 xcb_void_cookie_t
xcb_dri2_destroy_drawable_checked(xcb_connection_t * c,xcb_drawable_t drawable)427 xcb_dri2_destroy_drawable_checked (xcb_connection_t *c /**< */,
428 xcb_drawable_t drawable /**< */)
429 {
430 static const xcb_protocol_request_t xcb_req = {
431 /* count */ 2,
432 /* ext */ &xcb_dri2_id,
433 /* opcode */ XCB_DRI2_DESTROY_DRAWABLE,
434 /* isvoid */ 1
435 };
436
437 struct iovec xcb_parts[4];
438 xcb_void_cookie_t xcb_ret;
439 xcb_dri2_destroy_drawable_request_t xcb_out;
440
441 xcb_out.drawable = drawable;
442
443 xcb_parts[2].iov_base = (char *) &xcb_out;
444 xcb_parts[2].iov_len = sizeof(xcb_out);
445 xcb_parts[3].iov_base = 0;
446 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
447
448 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
449 return xcb_ret;
450 }
451
452 xcb_void_cookie_t
xcb_dri2_destroy_drawable(xcb_connection_t * c,xcb_drawable_t drawable)453 xcb_dri2_destroy_drawable (xcb_connection_t *c /**< */,
454 xcb_drawable_t drawable /**< */)
455 {
456 static const xcb_protocol_request_t xcb_req = {
457 /* count */ 2,
458 /* ext */ &xcb_dri2_id,
459 /* opcode */ XCB_DRI2_DESTROY_DRAWABLE,
460 /* isvoid */ 1
461 };
462
463 struct iovec xcb_parts[4];
464 xcb_void_cookie_t xcb_ret;
465 xcb_dri2_destroy_drawable_request_t xcb_out;
466
467 xcb_out.drawable = drawable;
468
469 xcb_parts[2].iov_base = (char *) &xcb_out;
470 xcb_parts[2].iov_len = sizeof(xcb_out);
471 xcb_parts[3].iov_base = 0;
472 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
473
474 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
475 return xcb_ret;
476 }
477
478 int
xcb_dri2_get_buffers_sizeof(const void * _buffer,uint32_t attachments_len)479 xcb_dri2_get_buffers_sizeof (const void *_buffer /**< */,
480 uint32_t attachments_len /**< */)
481 {
482 char *xcb_tmp = (char *)_buffer;
483 unsigned int xcb_buffer_len = 0;
484 unsigned int xcb_block_len = 0;
485 unsigned int xcb_pad = 0;
486 unsigned int xcb_align_to = 0;
487
488
489 xcb_block_len += sizeof(xcb_dri2_get_buffers_request_t);
490 xcb_tmp += xcb_block_len;
491 xcb_buffer_len += xcb_block_len;
492 xcb_block_len = 0;
493 /* attachments */
494 xcb_block_len += attachments_len * sizeof(uint32_t);
495 xcb_tmp += xcb_block_len;
496 xcb_align_to = ALIGNOF(uint32_t);
497 /* insert padding */
498 xcb_pad = -xcb_block_len & (xcb_align_to - 1);
499 xcb_buffer_len += xcb_block_len + xcb_pad;
500 if (0 != xcb_pad) {
501 xcb_tmp += xcb_pad;
502 xcb_pad = 0;
503 }
504 xcb_block_len = 0;
505
506 return xcb_buffer_len;
507 }
508
509 xcb_dri2_get_buffers_cookie_t
xcb_dri2_get_buffers(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t count,uint32_t attachments_len,const uint32_t * attachments)510 xcb_dri2_get_buffers (xcb_connection_t *c /**< */,
511 xcb_drawable_t drawable /**< */,
512 uint32_t count /**< */,
513 uint32_t attachments_len /**< */,
514 const uint32_t *attachments /**< */)
515 {
516 static const xcb_protocol_request_t xcb_req = {
517 /* count */ 4,
518 /* ext */ &xcb_dri2_id,
519 /* opcode */ XCB_DRI2_GET_BUFFERS,
520 /* isvoid */ 0
521 };
522
523 struct iovec xcb_parts[6];
524 xcb_dri2_get_buffers_cookie_t xcb_ret;
525 xcb_dri2_get_buffers_request_t xcb_out;
526
527 xcb_out.drawable = drawable;
528 xcb_out.count = count;
529
530 xcb_parts[2].iov_base = (char *) &xcb_out;
531 xcb_parts[2].iov_len = sizeof(xcb_out);
532 xcb_parts[3].iov_base = 0;
533 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
534 /* uint32_t attachments */
535 xcb_parts[4].iov_base = (char *) attachments;
536 xcb_parts[4].iov_len = attachments_len * sizeof(uint32_t);
537 xcb_parts[5].iov_base = 0;
538 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
539
540 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
541 return xcb_ret;
542 }
543
544 xcb_dri2_get_buffers_cookie_t
xcb_dri2_get_buffers_unchecked(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t count,uint32_t attachments_len,const uint32_t * attachments)545 xcb_dri2_get_buffers_unchecked (xcb_connection_t *c /**< */,
546 xcb_drawable_t drawable /**< */,
547 uint32_t count /**< */,
548 uint32_t attachments_len /**< */,
549 const uint32_t *attachments /**< */)
550 {
551 static const xcb_protocol_request_t xcb_req = {
552 /* count */ 4,
553 /* ext */ &xcb_dri2_id,
554 /* opcode */ XCB_DRI2_GET_BUFFERS,
555 /* isvoid */ 0
556 };
557
558 struct iovec xcb_parts[6];
559 xcb_dri2_get_buffers_cookie_t xcb_ret;
560 xcb_dri2_get_buffers_request_t xcb_out;
561
562 xcb_out.drawable = drawable;
563 xcb_out.count = count;
564
565 xcb_parts[2].iov_base = (char *) &xcb_out;
566 xcb_parts[2].iov_len = sizeof(xcb_out);
567 xcb_parts[3].iov_base = 0;
568 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
569 /* uint32_t attachments */
570 xcb_parts[4].iov_base = (char *) attachments;
571 xcb_parts[4].iov_len = attachments_len * sizeof(uint32_t);
572 xcb_parts[5].iov_base = 0;
573 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
574
575 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
576 return xcb_ret;
577 }
578
579 xcb_dri2_dri2_buffer_t *
xcb_dri2_get_buffers_buffers(const xcb_dri2_get_buffers_reply_t * R)580 xcb_dri2_get_buffers_buffers (const xcb_dri2_get_buffers_reply_t *R /**< */)
581 {
582 return (xcb_dri2_dri2_buffer_t *) (R + 1);
583 }
584
585 int
xcb_dri2_get_buffers_buffers_length(const xcb_dri2_get_buffers_reply_t * R)586 xcb_dri2_get_buffers_buffers_length (const xcb_dri2_get_buffers_reply_t *R /**< */)
587 {
588 return R->count;
589 }
590
591 xcb_dri2_dri2_buffer_iterator_t
xcb_dri2_get_buffers_buffers_iterator(const xcb_dri2_get_buffers_reply_t * R)592 xcb_dri2_get_buffers_buffers_iterator (const xcb_dri2_get_buffers_reply_t *R /**< */)
593 {
594 xcb_dri2_dri2_buffer_iterator_t i;
595 i.data = (xcb_dri2_dri2_buffer_t *) (R + 1);
596 i.rem = R->count;
597 i.index = (char *) i.data - (char *) R;
598 return i;
599 }
600
601 xcb_dri2_get_buffers_reply_t *
xcb_dri2_get_buffers_reply(xcb_connection_t * c,xcb_dri2_get_buffers_cookie_t cookie,xcb_generic_error_t ** e)602 xcb_dri2_get_buffers_reply (xcb_connection_t *c /**< */,
603 xcb_dri2_get_buffers_cookie_t cookie /**< */,
604 xcb_generic_error_t **e /**< */)
605 {
606 return (xcb_dri2_get_buffers_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
607 }
608
609 xcb_dri2_copy_region_cookie_t
xcb_dri2_copy_region(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t region,uint32_t dest,uint32_t src)610 xcb_dri2_copy_region (xcb_connection_t *c /**< */,
611 xcb_drawable_t drawable /**< */,
612 uint32_t region /**< */,
613 uint32_t dest /**< */,
614 uint32_t src /**< */)
615 {
616 static const xcb_protocol_request_t xcb_req = {
617 /* count */ 2,
618 /* ext */ &xcb_dri2_id,
619 /* opcode */ XCB_DRI2_COPY_REGION,
620 /* isvoid */ 0
621 };
622
623 struct iovec xcb_parts[4];
624 xcb_dri2_copy_region_cookie_t xcb_ret;
625 xcb_dri2_copy_region_request_t xcb_out;
626
627 xcb_out.drawable = drawable;
628 xcb_out.region = region;
629 xcb_out.dest = dest;
630 xcb_out.src = src;
631
632 xcb_parts[2].iov_base = (char *) &xcb_out;
633 xcb_parts[2].iov_len = sizeof(xcb_out);
634 xcb_parts[3].iov_base = 0;
635 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
636
637 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
638 return xcb_ret;
639 }
640
641 xcb_dri2_copy_region_cookie_t
xcb_dri2_copy_region_unchecked(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t region,uint32_t dest,uint32_t src)642 xcb_dri2_copy_region_unchecked (xcb_connection_t *c /**< */,
643 xcb_drawable_t drawable /**< */,
644 uint32_t region /**< */,
645 uint32_t dest /**< */,
646 uint32_t src /**< */)
647 {
648 static const xcb_protocol_request_t xcb_req = {
649 /* count */ 2,
650 /* ext */ &xcb_dri2_id,
651 /* opcode */ XCB_DRI2_COPY_REGION,
652 /* isvoid */ 0
653 };
654
655 struct iovec xcb_parts[4];
656 xcb_dri2_copy_region_cookie_t xcb_ret;
657 xcb_dri2_copy_region_request_t xcb_out;
658
659 xcb_out.drawable = drawable;
660 xcb_out.region = region;
661 xcb_out.dest = dest;
662 xcb_out.src = src;
663
664 xcb_parts[2].iov_base = (char *) &xcb_out;
665 xcb_parts[2].iov_len = sizeof(xcb_out);
666 xcb_parts[3].iov_base = 0;
667 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
668
669 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
670 return xcb_ret;
671 }
672
673 xcb_dri2_copy_region_reply_t *
xcb_dri2_copy_region_reply(xcb_connection_t * c,xcb_dri2_copy_region_cookie_t cookie,xcb_generic_error_t ** e)674 xcb_dri2_copy_region_reply (xcb_connection_t *c /**< */,
675 xcb_dri2_copy_region_cookie_t cookie /**< */,
676 xcb_generic_error_t **e /**< */)
677 {
678 return (xcb_dri2_copy_region_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
679 }
680
681 int
xcb_dri2_get_buffers_with_format_sizeof(const void * _buffer,uint32_t attachments_len)682 xcb_dri2_get_buffers_with_format_sizeof (const void *_buffer /**< */,
683 uint32_t attachments_len /**< */)
684 {
685 char *xcb_tmp = (char *)_buffer;
686 unsigned int xcb_buffer_len = 0;
687 unsigned int xcb_block_len = 0;
688 unsigned int xcb_pad = 0;
689 unsigned int xcb_align_to = 0;
690
691
692 xcb_block_len += sizeof(xcb_dri2_get_buffers_with_format_request_t);
693 xcb_tmp += xcb_block_len;
694 xcb_buffer_len += xcb_block_len;
695 xcb_block_len = 0;
696 /* attachments */
697 xcb_block_len += attachments_len * sizeof(xcb_dri2_attach_format_t);
698 xcb_tmp += xcb_block_len;
699 xcb_align_to = ALIGNOF(xcb_dri2_attach_format_t);
700 /* insert padding */
701 xcb_pad = -xcb_block_len & (xcb_align_to - 1);
702 xcb_buffer_len += xcb_block_len + xcb_pad;
703 if (0 != xcb_pad) {
704 xcb_tmp += xcb_pad;
705 xcb_pad = 0;
706 }
707 xcb_block_len = 0;
708
709 return xcb_buffer_len;
710 }
711
712 xcb_dri2_get_buffers_with_format_cookie_t
xcb_dri2_get_buffers_with_format(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t count,uint32_t attachments_len,const xcb_dri2_attach_format_t * attachments)713 xcb_dri2_get_buffers_with_format (xcb_connection_t *c /**< */,
714 xcb_drawable_t drawable /**< */,
715 uint32_t count /**< */,
716 uint32_t attachments_len /**< */,
717 const xcb_dri2_attach_format_t *attachments /**< */)
718 {
719 static const xcb_protocol_request_t xcb_req = {
720 /* count */ 4,
721 /* ext */ &xcb_dri2_id,
722 /* opcode */ XCB_DRI2_GET_BUFFERS_WITH_FORMAT,
723 /* isvoid */ 0
724 };
725
726 struct iovec xcb_parts[6];
727 xcb_dri2_get_buffers_with_format_cookie_t xcb_ret;
728 xcb_dri2_get_buffers_with_format_request_t xcb_out;
729
730 xcb_out.drawable = drawable;
731 xcb_out.count = count;
732
733 xcb_parts[2].iov_base = (char *) &xcb_out;
734 xcb_parts[2].iov_len = sizeof(xcb_out);
735 xcb_parts[3].iov_base = 0;
736 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
737 /* xcb_dri2_attach_format_t attachments */
738 xcb_parts[4].iov_base = (char *) attachments;
739 xcb_parts[4].iov_len = attachments_len * sizeof(xcb_dri2_attach_format_t);
740 xcb_parts[5].iov_base = 0;
741 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
742
743 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
744 return xcb_ret;
745 }
746
747 xcb_dri2_get_buffers_with_format_cookie_t
xcb_dri2_get_buffers_with_format_unchecked(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t count,uint32_t attachments_len,const xcb_dri2_attach_format_t * attachments)748 xcb_dri2_get_buffers_with_format_unchecked (xcb_connection_t *c /**< */,
749 xcb_drawable_t drawable /**< */,
750 uint32_t count /**< */,
751 uint32_t attachments_len /**< */,
752 const xcb_dri2_attach_format_t *attachments /**< */)
753 {
754 static const xcb_protocol_request_t xcb_req = {
755 /* count */ 4,
756 /* ext */ &xcb_dri2_id,
757 /* opcode */ XCB_DRI2_GET_BUFFERS_WITH_FORMAT,
758 /* isvoid */ 0
759 };
760
761 struct iovec xcb_parts[6];
762 xcb_dri2_get_buffers_with_format_cookie_t xcb_ret;
763 xcb_dri2_get_buffers_with_format_request_t xcb_out;
764
765 xcb_out.drawable = drawable;
766 xcb_out.count = count;
767
768 xcb_parts[2].iov_base = (char *) &xcb_out;
769 xcb_parts[2].iov_len = sizeof(xcb_out);
770 xcb_parts[3].iov_base = 0;
771 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
772 /* xcb_dri2_attach_format_t attachments */
773 xcb_parts[4].iov_base = (char *) attachments;
774 xcb_parts[4].iov_len = attachments_len * sizeof(xcb_dri2_attach_format_t);
775 xcb_parts[5].iov_base = 0;
776 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
777
778 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
779 return xcb_ret;
780 }
781
782 xcb_dri2_dri2_buffer_t *
xcb_dri2_get_buffers_with_format_buffers(const xcb_dri2_get_buffers_with_format_reply_t * R)783 xcb_dri2_get_buffers_with_format_buffers (const xcb_dri2_get_buffers_with_format_reply_t *R /**< */)
784 {
785 return (xcb_dri2_dri2_buffer_t *) (R + 1);
786 }
787
788 int
xcb_dri2_get_buffers_with_format_buffers_length(const xcb_dri2_get_buffers_with_format_reply_t * R)789 xcb_dri2_get_buffers_with_format_buffers_length (const xcb_dri2_get_buffers_with_format_reply_t *R /**< */)
790 {
791 return R->count;
792 }
793
794 xcb_dri2_dri2_buffer_iterator_t
xcb_dri2_get_buffers_with_format_buffers_iterator(const xcb_dri2_get_buffers_with_format_reply_t * R)795 xcb_dri2_get_buffers_with_format_buffers_iterator (const xcb_dri2_get_buffers_with_format_reply_t *R /**< */)
796 {
797 xcb_dri2_dri2_buffer_iterator_t i;
798 i.data = (xcb_dri2_dri2_buffer_t *) (R + 1);
799 i.rem = R->count;
800 i.index = (char *) i.data - (char *) R;
801 return i;
802 }
803
804 xcb_dri2_get_buffers_with_format_reply_t *
xcb_dri2_get_buffers_with_format_reply(xcb_connection_t * c,xcb_dri2_get_buffers_with_format_cookie_t cookie,xcb_generic_error_t ** e)805 xcb_dri2_get_buffers_with_format_reply (xcb_connection_t *c /**< */,
806 xcb_dri2_get_buffers_with_format_cookie_t cookie /**< */,
807 xcb_generic_error_t **e /**< */)
808 {
809 return (xcb_dri2_get_buffers_with_format_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
810 }
811
812 xcb_dri2_swap_buffers_cookie_t
xcb_dri2_swap_buffers(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t target_msc_hi,uint32_t target_msc_lo,uint32_t divisor_hi,uint32_t divisor_lo,uint32_t remainder_hi,uint32_t remainder_lo)813 xcb_dri2_swap_buffers (xcb_connection_t *c /**< */,
814 xcb_drawable_t drawable /**< */,
815 uint32_t target_msc_hi /**< */,
816 uint32_t target_msc_lo /**< */,
817 uint32_t divisor_hi /**< */,
818 uint32_t divisor_lo /**< */,
819 uint32_t remainder_hi /**< */,
820 uint32_t remainder_lo /**< */)
821 {
822 static const xcb_protocol_request_t xcb_req = {
823 /* count */ 2,
824 /* ext */ &xcb_dri2_id,
825 /* opcode */ XCB_DRI2_SWAP_BUFFERS,
826 /* isvoid */ 0
827 };
828
829 struct iovec xcb_parts[4];
830 xcb_dri2_swap_buffers_cookie_t xcb_ret;
831 xcb_dri2_swap_buffers_request_t xcb_out;
832
833 xcb_out.drawable = drawable;
834 xcb_out.target_msc_hi = target_msc_hi;
835 xcb_out.target_msc_lo = target_msc_lo;
836 xcb_out.divisor_hi = divisor_hi;
837 xcb_out.divisor_lo = divisor_lo;
838 xcb_out.remainder_hi = remainder_hi;
839 xcb_out.remainder_lo = remainder_lo;
840
841 xcb_parts[2].iov_base = (char *) &xcb_out;
842 xcb_parts[2].iov_len = sizeof(xcb_out);
843 xcb_parts[3].iov_base = 0;
844 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
845
846 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
847 return xcb_ret;
848 }
849
850 xcb_dri2_swap_buffers_cookie_t
xcb_dri2_swap_buffers_unchecked(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t target_msc_hi,uint32_t target_msc_lo,uint32_t divisor_hi,uint32_t divisor_lo,uint32_t remainder_hi,uint32_t remainder_lo)851 xcb_dri2_swap_buffers_unchecked (xcb_connection_t *c /**< */,
852 xcb_drawable_t drawable /**< */,
853 uint32_t target_msc_hi /**< */,
854 uint32_t target_msc_lo /**< */,
855 uint32_t divisor_hi /**< */,
856 uint32_t divisor_lo /**< */,
857 uint32_t remainder_hi /**< */,
858 uint32_t remainder_lo /**< */)
859 {
860 static const xcb_protocol_request_t xcb_req = {
861 /* count */ 2,
862 /* ext */ &xcb_dri2_id,
863 /* opcode */ XCB_DRI2_SWAP_BUFFERS,
864 /* isvoid */ 0
865 };
866
867 struct iovec xcb_parts[4];
868 xcb_dri2_swap_buffers_cookie_t xcb_ret;
869 xcb_dri2_swap_buffers_request_t xcb_out;
870
871 xcb_out.drawable = drawable;
872 xcb_out.target_msc_hi = target_msc_hi;
873 xcb_out.target_msc_lo = target_msc_lo;
874 xcb_out.divisor_hi = divisor_hi;
875 xcb_out.divisor_lo = divisor_lo;
876 xcb_out.remainder_hi = remainder_hi;
877 xcb_out.remainder_lo = remainder_lo;
878
879 xcb_parts[2].iov_base = (char *) &xcb_out;
880 xcb_parts[2].iov_len = sizeof(xcb_out);
881 xcb_parts[3].iov_base = 0;
882 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
883
884 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
885 return xcb_ret;
886 }
887
888 xcb_dri2_swap_buffers_reply_t *
xcb_dri2_swap_buffers_reply(xcb_connection_t * c,xcb_dri2_swap_buffers_cookie_t cookie,xcb_generic_error_t ** e)889 xcb_dri2_swap_buffers_reply (xcb_connection_t *c /**< */,
890 xcb_dri2_swap_buffers_cookie_t cookie /**< */,
891 xcb_generic_error_t **e /**< */)
892 {
893 return (xcb_dri2_swap_buffers_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
894 }
895
896 xcb_dri2_get_msc_cookie_t
xcb_dri2_get_msc(xcb_connection_t * c,xcb_drawable_t drawable)897 xcb_dri2_get_msc (xcb_connection_t *c /**< */,
898 xcb_drawable_t drawable /**< */)
899 {
900 static const xcb_protocol_request_t xcb_req = {
901 /* count */ 2,
902 /* ext */ &xcb_dri2_id,
903 /* opcode */ XCB_DRI2_GET_MSC,
904 /* isvoid */ 0
905 };
906
907 struct iovec xcb_parts[4];
908 xcb_dri2_get_msc_cookie_t xcb_ret;
909 xcb_dri2_get_msc_request_t xcb_out;
910
911 xcb_out.drawable = drawable;
912
913 xcb_parts[2].iov_base = (char *) &xcb_out;
914 xcb_parts[2].iov_len = sizeof(xcb_out);
915 xcb_parts[3].iov_base = 0;
916 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
917
918 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
919 return xcb_ret;
920 }
921
922 xcb_dri2_get_msc_cookie_t
xcb_dri2_get_msc_unchecked(xcb_connection_t * c,xcb_drawable_t drawable)923 xcb_dri2_get_msc_unchecked (xcb_connection_t *c /**< */,
924 xcb_drawable_t drawable /**< */)
925 {
926 static const xcb_protocol_request_t xcb_req = {
927 /* count */ 2,
928 /* ext */ &xcb_dri2_id,
929 /* opcode */ XCB_DRI2_GET_MSC,
930 /* isvoid */ 0
931 };
932
933 struct iovec xcb_parts[4];
934 xcb_dri2_get_msc_cookie_t xcb_ret;
935 xcb_dri2_get_msc_request_t xcb_out;
936
937 xcb_out.drawable = drawable;
938
939 xcb_parts[2].iov_base = (char *) &xcb_out;
940 xcb_parts[2].iov_len = sizeof(xcb_out);
941 xcb_parts[3].iov_base = 0;
942 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
943
944 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
945 return xcb_ret;
946 }
947
948 xcb_dri2_get_msc_reply_t *
xcb_dri2_get_msc_reply(xcb_connection_t * c,xcb_dri2_get_msc_cookie_t cookie,xcb_generic_error_t ** e)949 xcb_dri2_get_msc_reply (xcb_connection_t *c /**< */,
950 xcb_dri2_get_msc_cookie_t cookie /**< */,
951 xcb_generic_error_t **e /**< */)
952 {
953 return (xcb_dri2_get_msc_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
954 }
955
956 xcb_dri2_wait_msc_cookie_t
xcb_dri2_wait_msc(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t target_msc_hi,uint32_t target_msc_lo,uint32_t divisor_hi,uint32_t divisor_lo,uint32_t remainder_hi,uint32_t remainder_lo)957 xcb_dri2_wait_msc (xcb_connection_t *c /**< */,
958 xcb_drawable_t drawable /**< */,
959 uint32_t target_msc_hi /**< */,
960 uint32_t target_msc_lo /**< */,
961 uint32_t divisor_hi /**< */,
962 uint32_t divisor_lo /**< */,
963 uint32_t remainder_hi /**< */,
964 uint32_t remainder_lo /**< */)
965 {
966 static const xcb_protocol_request_t xcb_req = {
967 /* count */ 2,
968 /* ext */ &xcb_dri2_id,
969 /* opcode */ XCB_DRI2_WAIT_MSC,
970 /* isvoid */ 0
971 };
972
973 struct iovec xcb_parts[4];
974 xcb_dri2_wait_msc_cookie_t xcb_ret;
975 xcb_dri2_wait_msc_request_t xcb_out;
976
977 xcb_out.drawable = drawable;
978 xcb_out.target_msc_hi = target_msc_hi;
979 xcb_out.target_msc_lo = target_msc_lo;
980 xcb_out.divisor_hi = divisor_hi;
981 xcb_out.divisor_lo = divisor_lo;
982 xcb_out.remainder_hi = remainder_hi;
983 xcb_out.remainder_lo = remainder_lo;
984
985 xcb_parts[2].iov_base = (char *) &xcb_out;
986 xcb_parts[2].iov_len = sizeof(xcb_out);
987 xcb_parts[3].iov_base = 0;
988 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
989
990 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
991 return xcb_ret;
992 }
993
994 xcb_dri2_wait_msc_cookie_t
xcb_dri2_wait_msc_unchecked(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t target_msc_hi,uint32_t target_msc_lo,uint32_t divisor_hi,uint32_t divisor_lo,uint32_t remainder_hi,uint32_t remainder_lo)995 xcb_dri2_wait_msc_unchecked (xcb_connection_t *c /**< */,
996 xcb_drawable_t drawable /**< */,
997 uint32_t target_msc_hi /**< */,
998 uint32_t target_msc_lo /**< */,
999 uint32_t divisor_hi /**< */,
1000 uint32_t divisor_lo /**< */,
1001 uint32_t remainder_hi /**< */,
1002 uint32_t remainder_lo /**< */)
1003 {
1004 static const xcb_protocol_request_t xcb_req = {
1005 /* count */ 2,
1006 /* ext */ &xcb_dri2_id,
1007 /* opcode */ XCB_DRI2_WAIT_MSC,
1008 /* isvoid */ 0
1009 };
1010
1011 struct iovec xcb_parts[4];
1012 xcb_dri2_wait_msc_cookie_t xcb_ret;
1013 xcb_dri2_wait_msc_request_t xcb_out;
1014
1015 xcb_out.drawable = drawable;
1016 xcb_out.target_msc_hi = target_msc_hi;
1017 xcb_out.target_msc_lo = target_msc_lo;
1018 xcb_out.divisor_hi = divisor_hi;
1019 xcb_out.divisor_lo = divisor_lo;
1020 xcb_out.remainder_hi = remainder_hi;
1021 xcb_out.remainder_lo = remainder_lo;
1022
1023 xcb_parts[2].iov_base = (char *) &xcb_out;
1024 xcb_parts[2].iov_len = sizeof(xcb_out);
1025 xcb_parts[3].iov_base = 0;
1026 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1027
1028 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
1029 return xcb_ret;
1030 }
1031
1032 xcb_dri2_wait_msc_reply_t *
xcb_dri2_wait_msc_reply(xcb_connection_t * c,xcb_dri2_wait_msc_cookie_t cookie,xcb_generic_error_t ** e)1033 xcb_dri2_wait_msc_reply (xcb_connection_t *c /**< */,
1034 xcb_dri2_wait_msc_cookie_t cookie /**< */,
1035 xcb_generic_error_t **e /**< */)
1036 {
1037 return (xcb_dri2_wait_msc_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
1038 }
1039
1040 xcb_dri2_wait_sbc_cookie_t
xcb_dri2_wait_sbc(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t target_sbc_hi,uint32_t target_sbc_lo)1041 xcb_dri2_wait_sbc (xcb_connection_t *c /**< */,
1042 xcb_drawable_t drawable /**< */,
1043 uint32_t target_sbc_hi /**< */,
1044 uint32_t target_sbc_lo /**< */)
1045 {
1046 static const xcb_protocol_request_t xcb_req = {
1047 /* count */ 2,
1048 /* ext */ &xcb_dri2_id,
1049 /* opcode */ XCB_DRI2_WAIT_SBC,
1050 /* isvoid */ 0
1051 };
1052
1053 struct iovec xcb_parts[4];
1054 xcb_dri2_wait_sbc_cookie_t xcb_ret;
1055 xcb_dri2_wait_sbc_request_t xcb_out;
1056
1057 xcb_out.drawable = drawable;
1058 xcb_out.target_sbc_hi = target_sbc_hi;
1059 xcb_out.target_sbc_lo = target_sbc_lo;
1060
1061 xcb_parts[2].iov_base = (char *) &xcb_out;
1062 xcb_parts[2].iov_len = sizeof(xcb_out);
1063 xcb_parts[3].iov_base = 0;
1064 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1065
1066 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
1067 return xcb_ret;
1068 }
1069
1070 xcb_dri2_wait_sbc_cookie_t
xcb_dri2_wait_sbc_unchecked(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t target_sbc_hi,uint32_t target_sbc_lo)1071 xcb_dri2_wait_sbc_unchecked (xcb_connection_t *c /**< */,
1072 xcb_drawable_t drawable /**< */,
1073 uint32_t target_sbc_hi /**< */,
1074 uint32_t target_sbc_lo /**< */)
1075 {
1076 static const xcb_protocol_request_t xcb_req = {
1077 /* count */ 2,
1078 /* ext */ &xcb_dri2_id,
1079 /* opcode */ XCB_DRI2_WAIT_SBC,
1080 /* isvoid */ 0
1081 };
1082
1083 struct iovec xcb_parts[4];
1084 xcb_dri2_wait_sbc_cookie_t xcb_ret;
1085 xcb_dri2_wait_sbc_request_t xcb_out;
1086
1087 xcb_out.drawable = drawable;
1088 xcb_out.target_sbc_hi = target_sbc_hi;
1089 xcb_out.target_sbc_lo = target_sbc_lo;
1090
1091 xcb_parts[2].iov_base = (char *) &xcb_out;
1092 xcb_parts[2].iov_len = sizeof(xcb_out);
1093 xcb_parts[3].iov_base = 0;
1094 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1095
1096 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
1097 return xcb_ret;
1098 }
1099
1100 xcb_dri2_wait_sbc_reply_t *
xcb_dri2_wait_sbc_reply(xcb_connection_t * c,xcb_dri2_wait_sbc_cookie_t cookie,xcb_generic_error_t ** e)1101 xcb_dri2_wait_sbc_reply (xcb_connection_t *c /**< */,
1102 xcb_dri2_wait_sbc_cookie_t cookie /**< */,
1103 xcb_generic_error_t **e /**< */)
1104 {
1105 return (xcb_dri2_wait_sbc_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
1106 }
1107
1108 xcb_void_cookie_t
xcb_dri2_swap_interval_checked(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t interval)1109 xcb_dri2_swap_interval_checked (xcb_connection_t *c /**< */,
1110 xcb_drawable_t drawable /**< */,
1111 uint32_t interval /**< */)
1112 {
1113 static const xcb_protocol_request_t xcb_req = {
1114 /* count */ 2,
1115 /* ext */ &xcb_dri2_id,
1116 /* opcode */ XCB_DRI2_SWAP_INTERVAL,
1117 /* isvoid */ 1
1118 };
1119
1120 struct iovec xcb_parts[4];
1121 xcb_void_cookie_t xcb_ret;
1122 xcb_dri2_swap_interval_request_t xcb_out;
1123
1124 xcb_out.drawable = drawable;
1125 xcb_out.interval = interval;
1126
1127 xcb_parts[2].iov_base = (char *) &xcb_out;
1128 xcb_parts[2].iov_len = sizeof(xcb_out);
1129 xcb_parts[3].iov_base = 0;
1130 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1131
1132 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
1133 return xcb_ret;
1134 }
1135
1136 xcb_void_cookie_t
xcb_dri2_swap_interval(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t interval)1137 xcb_dri2_swap_interval (xcb_connection_t *c /**< */,
1138 xcb_drawable_t drawable /**< */,
1139 uint32_t interval /**< */)
1140 {
1141 static const xcb_protocol_request_t xcb_req = {
1142 /* count */ 2,
1143 /* ext */ &xcb_dri2_id,
1144 /* opcode */ XCB_DRI2_SWAP_INTERVAL,
1145 /* isvoid */ 1
1146 };
1147
1148 struct iovec xcb_parts[4];
1149 xcb_void_cookie_t xcb_ret;
1150 xcb_dri2_swap_interval_request_t xcb_out;
1151
1152 xcb_out.drawable = drawable;
1153 xcb_out.interval = interval;
1154
1155 xcb_parts[2].iov_base = (char *) &xcb_out;
1156 xcb_parts[2].iov_len = sizeof(xcb_out);
1157 xcb_parts[3].iov_base = 0;
1158 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1159
1160 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
1161 return xcb_ret;
1162 }
1163
1164 xcb_dri2_get_param_cookie_t
xcb_dri2_get_param(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t param)1165 xcb_dri2_get_param (xcb_connection_t *c /**< */,
1166 xcb_drawable_t drawable /**< */,
1167 uint32_t param /**< */)
1168 {
1169 static const xcb_protocol_request_t xcb_req = {
1170 /* count */ 2,
1171 /* ext */ &xcb_dri2_id,
1172 /* opcode */ XCB_DRI2_GET_PARAM,
1173 /* isvoid */ 0
1174 };
1175
1176 struct iovec xcb_parts[4];
1177 xcb_dri2_get_param_cookie_t xcb_ret;
1178 xcb_dri2_get_param_request_t xcb_out;
1179
1180 xcb_out.drawable = drawable;
1181 xcb_out.param = param;
1182
1183 xcb_parts[2].iov_base = (char *) &xcb_out;
1184 xcb_parts[2].iov_len = sizeof(xcb_out);
1185 xcb_parts[3].iov_base = 0;
1186 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1187
1188 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
1189 return xcb_ret;
1190 }
1191
1192 xcb_dri2_get_param_cookie_t
xcb_dri2_get_param_unchecked(xcb_connection_t * c,xcb_drawable_t drawable,uint32_t param)1193 xcb_dri2_get_param_unchecked (xcb_connection_t *c /**< */,
1194 xcb_drawable_t drawable /**< */,
1195 uint32_t param /**< */)
1196 {
1197 static const xcb_protocol_request_t xcb_req = {
1198 /* count */ 2,
1199 /* ext */ &xcb_dri2_id,
1200 /* opcode */ XCB_DRI2_GET_PARAM,
1201 /* isvoid */ 0
1202 };
1203
1204 struct iovec xcb_parts[4];
1205 xcb_dri2_get_param_cookie_t xcb_ret;
1206 xcb_dri2_get_param_request_t xcb_out;
1207
1208 xcb_out.drawable = drawable;
1209 xcb_out.param = param;
1210
1211 xcb_parts[2].iov_base = (char *) &xcb_out;
1212 xcb_parts[2].iov_len = sizeof(xcb_out);
1213 xcb_parts[3].iov_base = 0;
1214 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1215
1216 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
1217 return xcb_ret;
1218 }
1219
1220 xcb_dri2_get_param_reply_t *
xcb_dri2_get_param_reply(xcb_connection_t * c,xcb_dri2_get_param_cookie_t cookie,xcb_generic_error_t ** e)1221 xcb_dri2_get_param_reply (xcb_connection_t *c /**< */,
1222 xcb_dri2_get_param_cookie_t cookie /**< */,
1223 xcb_generic_error_t **e /**< */)
1224 {
1225 return (xcb_dri2_get_param_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
1226 }
1227
1228