xref: /netbsd-src/external/mit/xorg/lib/libxcb/files/dri3.h (revision fea83ee4938f6f630ec4626dba8d28098c73f0cc)
1 /*
2  * This file generated automatically from dri3.xml by c_client.py.
3  * Edit at your peril.
4  */
5 
6 /**
7  * @defgroup XCB_DRI3_API XCB DRI3 API
8  * @brief DRI3 XCB Protocol Implementation.
9  * @{
10  **/
11 
12 #ifndef __DRI3_H
13 #define __DRI3_H
14 
15 #include "xcb.h"
16 #include "xproto.h"
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
22 #define XCB_DRI3_MAJOR_VERSION 1
23 #define XCB_DRI3_MINOR_VERSION 4
24 
25 extern xcb_extension_t xcb_dri3_id;
26 
27 typedef uint32_t xcb_dri3_syncobj_t;
28 
29 /**
30  * @brief xcb_dri3_syncobj_iterator_t
31  **/
32 typedef struct xcb_dri3_syncobj_iterator_t {
33     xcb_dri3_syncobj_t *data;
34     int                 rem;
35     int                 index;
36 } xcb_dri3_syncobj_iterator_t;
37 
38 /**
39  * @brief xcb_dri3_query_version_cookie_t
40  **/
41 typedef struct xcb_dri3_query_version_cookie_t {
42     unsigned int sequence;
43 } xcb_dri3_query_version_cookie_t;
44 
45 /** Opcode for xcb_dri3_query_version. */
46 #define XCB_DRI3_QUERY_VERSION 0
47 
48 /**
49  * @brief xcb_dri3_query_version_request_t
50  **/
51 typedef struct xcb_dri3_query_version_request_t {
52     uint8_t  major_opcode;
53     uint8_t  minor_opcode;
54     uint16_t length;
55     uint32_t major_version;
56     uint32_t minor_version;
57 } xcb_dri3_query_version_request_t;
58 
59 /**
60  * @brief xcb_dri3_query_version_reply_t
61  **/
62 typedef struct xcb_dri3_query_version_reply_t {
63     uint8_t  response_type;
64     uint8_t  pad0;
65     uint16_t sequence;
66     uint32_t length;
67     uint32_t major_version;
68     uint32_t minor_version;
69 } xcb_dri3_query_version_reply_t;
70 
71 /**
72  * @brief xcb_dri3_open_cookie_t
73  **/
74 typedef struct xcb_dri3_open_cookie_t {
75     unsigned int sequence;
76 } xcb_dri3_open_cookie_t;
77 
78 /** Opcode for xcb_dri3_open. */
79 #define XCB_DRI3_OPEN 1
80 
81 /**
82  * @brief xcb_dri3_open_request_t
83  **/
84 typedef struct xcb_dri3_open_request_t {
85     uint8_t        major_opcode;
86     uint8_t        minor_opcode;
87     uint16_t       length;
88     xcb_drawable_t drawable;
89     uint32_t       provider;
90 } xcb_dri3_open_request_t;
91 
92 /**
93  * @brief xcb_dri3_open_reply_t
94  **/
95 typedef struct xcb_dri3_open_reply_t {
96     uint8_t  response_type;
97     uint8_t  nfd;
98     uint16_t sequence;
99     uint32_t length;
100     uint8_t  pad0[24];
101 } xcb_dri3_open_reply_t;
102 
103 /** Opcode for xcb_dri3_pixmap_from_buffer. */
104 #define XCB_DRI3_PIXMAP_FROM_BUFFER 2
105 
106 /**
107  * @brief xcb_dri3_pixmap_from_buffer_request_t
108  **/
109 typedef struct xcb_dri3_pixmap_from_buffer_request_t {
110     uint8_t        major_opcode;
111     uint8_t        minor_opcode;
112     uint16_t       length;
113     xcb_pixmap_t   pixmap;
114     xcb_drawable_t drawable;
115     uint32_t       size;
116     uint16_t       width;
117     uint16_t       height;
118     uint16_t       stride;
119     uint8_t        depth;
120     uint8_t        bpp;
121 } xcb_dri3_pixmap_from_buffer_request_t;
122 
123 /**
124  * @brief xcb_dri3_buffer_from_pixmap_cookie_t
125  **/
126 typedef struct xcb_dri3_buffer_from_pixmap_cookie_t {
127     unsigned int sequence;
128 } xcb_dri3_buffer_from_pixmap_cookie_t;
129 
130 /** Opcode for xcb_dri3_buffer_from_pixmap. */
131 #define XCB_DRI3_BUFFER_FROM_PIXMAP 3
132 
133 /**
134  * @brief xcb_dri3_buffer_from_pixmap_request_t
135  **/
136 typedef struct xcb_dri3_buffer_from_pixmap_request_t {
137     uint8_t      major_opcode;
138     uint8_t      minor_opcode;
139     uint16_t     length;
140     xcb_pixmap_t pixmap;
141 } xcb_dri3_buffer_from_pixmap_request_t;
142 
143 /**
144  * @brief xcb_dri3_buffer_from_pixmap_reply_t
145  **/
146 typedef struct xcb_dri3_buffer_from_pixmap_reply_t {
147     uint8_t  response_type;
148     uint8_t  nfd;
149     uint16_t sequence;
150     uint32_t length;
151     uint32_t size;
152     uint16_t width;
153     uint16_t height;
154     uint16_t stride;
155     uint8_t  depth;
156     uint8_t  bpp;
157     uint8_t  pad0[12];
158 } xcb_dri3_buffer_from_pixmap_reply_t;
159 
160 /** Opcode for xcb_dri3_fence_from_fd. */
161 #define XCB_DRI3_FENCE_FROM_FD 4
162 
163 /**
164  * @brief xcb_dri3_fence_from_fd_request_t
165  **/
166 typedef struct xcb_dri3_fence_from_fd_request_t {
167     uint8_t        major_opcode;
168     uint8_t        minor_opcode;
169     uint16_t       length;
170     xcb_drawable_t drawable;
171     uint32_t       fence;
172     uint8_t        initially_triggered;
173     uint8_t        pad0[3];
174 } xcb_dri3_fence_from_fd_request_t;
175 
176 /**
177  * @brief xcb_dri3_fd_from_fence_cookie_t
178  **/
179 typedef struct xcb_dri3_fd_from_fence_cookie_t {
180     unsigned int sequence;
181 } xcb_dri3_fd_from_fence_cookie_t;
182 
183 /** Opcode for xcb_dri3_fd_from_fence. */
184 #define XCB_DRI3_FD_FROM_FENCE 5
185 
186 /**
187  * @brief xcb_dri3_fd_from_fence_request_t
188  **/
189 typedef struct xcb_dri3_fd_from_fence_request_t {
190     uint8_t        major_opcode;
191     uint8_t        minor_opcode;
192     uint16_t       length;
193     xcb_drawable_t drawable;
194     uint32_t       fence;
195 } xcb_dri3_fd_from_fence_request_t;
196 
197 /**
198  * @brief xcb_dri3_fd_from_fence_reply_t
199  **/
200 typedef struct xcb_dri3_fd_from_fence_reply_t {
201     uint8_t  response_type;
202     uint8_t  nfd;
203     uint16_t sequence;
204     uint32_t length;
205     uint8_t  pad0[24];
206 } xcb_dri3_fd_from_fence_reply_t;
207 
208 /**
209  * @brief xcb_dri3_get_supported_modifiers_cookie_t
210  **/
211 typedef struct xcb_dri3_get_supported_modifiers_cookie_t {
212     unsigned int sequence;
213 } xcb_dri3_get_supported_modifiers_cookie_t;
214 
215 /** Opcode for xcb_dri3_get_supported_modifiers. */
216 #define XCB_DRI3_GET_SUPPORTED_MODIFIERS 6
217 
218 /**
219  * @brief xcb_dri3_get_supported_modifiers_request_t
220  **/
221 typedef struct xcb_dri3_get_supported_modifiers_request_t {
222     uint8_t  major_opcode;
223     uint8_t  minor_opcode;
224     uint16_t length;
225     uint32_t window;
226     uint8_t  depth;
227     uint8_t  bpp;
228     uint8_t  pad0[2];
229 } xcb_dri3_get_supported_modifiers_request_t;
230 
231 /**
232  * @brief xcb_dri3_get_supported_modifiers_reply_t
233  **/
234 typedef struct xcb_dri3_get_supported_modifiers_reply_t {
235     uint8_t  response_type;
236     uint8_t  pad0;
237     uint16_t sequence;
238     uint32_t length;
239     uint32_t num_window_modifiers;
240     uint32_t num_screen_modifiers;
241     uint8_t  pad1[16];
242 } xcb_dri3_get_supported_modifiers_reply_t;
243 
244 /** Opcode for xcb_dri3_pixmap_from_buffers. */
245 #define XCB_DRI3_PIXMAP_FROM_BUFFERS 7
246 
247 /**
248  * @brief xcb_dri3_pixmap_from_buffers_request_t
249  **/
250 typedef struct xcb_dri3_pixmap_from_buffers_request_t {
251     uint8_t      major_opcode;
252     uint8_t      minor_opcode;
253     uint16_t     length;
254     xcb_pixmap_t pixmap;
255     xcb_window_t window;
256     uint8_t      num_buffers;
257     uint8_t      pad0[3];
258     uint16_t     width;
259     uint16_t     height;
260     uint32_t     stride0;
261     uint32_t     offset0;
262     uint32_t     stride1;
263     uint32_t     offset1;
264     uint32_t     stride2;
265     uint32_t     offset2;
266     uint32_t     stride3;
267     uint32_t     offset3;
268     uint8_t      depth;
269     uint8_t      bpp;
270     uint8_t      pad1[2];
271     uint64_t     modifier;
272 } xcb_dri3_pixmap_from_buffers_request_t;
273 
274 /**
275  * @brief xcb_dri3_buffers_from_pixmap_cookie_t
276  **/
277 typedef struct xcb_dri3_buffers_from_pixmap_cookie_t {
278     unsigned int sequence;
279 } xcb_dri3_buffers_from_pixmap_cookie_t;
280 
281 /** Opcode for xcb_dri3_buffers_from_pixmap. */
282 #define XCB_DRI3_BUFFERS_FROM_PIXMAP 8
283 
284 /**
285  * @brief xcb_dri3_buffers_from_pixmap_request_t
286  **/
287 typedef struct xcb_dri3_buffers_from_pixmap_request_t {
288     uint8_t      major_opcode;
289     uint8_t      minor_opcode;
290     uint16_t     length;
291     xcb_pixmap_t pixmap;
292 } xcb_dri3_buffers_from_pixmap_request_t;
293 
294 /**
295  * @brief xcb_dri3_buffers_from_pixmap_reply_t
296  **/
297 typedef struct xcb_dri3_buffers_from_pixmap_reply_t {
298     uint8_t  response_type;
299     uint8_t  nfd;
300     uint16_t sequence;
301     uint32_t length;
302     uint16_t width;
303     uint16_t height;
304     uint8_t  pad0[4];
305     uint64_t modifier;
306     uint8_t  depth;
307     uint8_t  bpp;
308     uint8_t  pad1[6];
309 } xcb_dri3_buffers_from_pixmap_reply_t;
310 
311 /** Opcode for xcb_dri3_set_drm_device_in_use. */
312 #define XCB_DRI3_SET_DRM_DEVICE_IN_USE 9
313 
314 /**
315  * @brief xcb_dri3_set_drm_device_in_use_request_t
316  **/
317 typedef struct xcb_dri3_set_drm_device_in_use_request_t {
318     uint8_t      major_opcode;
319     uint8_t      minor_opcode;
320     uint16_t     length;
321     xcb_window_t window;
322     uint32_t     drmMajor;
323     uint32_t     drmMinor;
324 } xcb_dri3_set_drm_device_in_use_request_t;
325 
326 /** Opcode for xcb_dri3_import_syncobj. */
327 #define XCB_DRI3_IMPORT_SYNCOBJ 10
328 
329 /**
330  * @brief xcb_dri3_import_syncobj_request_t
331  **/
332 typedef struct xcb_dri3_import_syncobj_request_t {
333     uint8_t            major_opcode;
334     uint8_t            minor_opcode;
335     uint16_t           length;
336     xcb_dri3_syncobj_t syncobj;
337     xcb_drawable_t     drawable;
338 } xcb_dri3_import_syncobj_request_t;
339 
340 /** Opcode for xcb_dri3_free_syncobj. */
341 #define XCB_DRI3_FREE_SYNCOBJ 11
342 
343 /**
344  * @brief xcb_dri3_free_syncobj_request_t
345  **/
346 typedef struct xcb_dri3_free_syncobj_request_t {
347     uint8_t            major_opcode;
348     uint8_t            minor_opcode;
349     uint16_t           length;
350     xcb_dri3_syncobj_t syncobj;
351 } xcb_dri3_free_syncobj_request_t;
352 
353 /**
354  * Get the next element of the iterator
355  * @param i Pointer to a xcb_dri3_syncobj_iterator_t
356  *
357  * Get the next element in the iterator. The member rem is
358  * decreased by one. The member data points to the next
359  * element. The member index is increased by sizeof(xcb_dri3_syncobj_t)
360  */
361 void
362 xcb_dri3_syncobj_next (xcb_dri3_syncobj_iterator_t *i);
363 
364 /**
365  * Return the iterator pointing to the last element
366  * @param i An xcb_dri3_syncobj_iterator_t
367  * @return  The iterator pointing to the last element
368  *
369  * Set the current element in the iterator to the last element.
370  * The member rem is set to 0. The member data points to the
371  * last element.
372  */
373 xcb_generic_iterator_t
374 xcb_dri3_syncobj_end (xcb_dri3_syncobj_iterator_t i);
375 
376 /**
377  *
378  * @param c The connection
379  * @return A cookie
380  *
381  * Delivers a request to the X server.
382  *
383  */
384 xcb_dri3_query_version_cookie_t
385 xcb_dri3_query_version (xcb_connection_t *c,
386                         uint32_t          major_version,
387                         uint32_t          minor_version);
388 
389 /**
390  *
391  * @param c The connection
392  * @return A cookie
393  *
394  * Delivers a request to the X server.
395  *
396  * This form can be used only if the request will cause
397  * a reply to be generated. Any returned error will be
398  * placed in the event queue.
399  */
400 xcb_dri3_query_version_cookie_t
401 xcb_dri3_query_version_unchecked (xcb_connection_t *c,
402                                   uint32_t          major_version,
403                                   uint32_t          minor_version);
404 
405 /**
406  * Return the reply
407  * @param c      The connection
408  * @param cookie The cookie
409  * @param e      The xcb_generic_error_t supplied
410  *
411  * Returns the reply of the request asked by
412  *
413  * The parameter @p e supplied to this function must be NULL if
414  * xcb_dri3_query_version_unchecked(). is used.
415  * Otherwise, it stores the error if any.
416  *
417  * The returned value must be freed by the caller using free().
418  */
419 xcb_dri3_query_version_reply_t *
420 xcb_dri3_query_version_reply (xcb_connection_t                 *c,
421                               xcb_dri3_query_version_cookie_t   cookie  /**< */,
422                               xcb_generic_error_t             **e);
423 
424 /**
425  *
426  * @param c The connection
427  * @return A cookie
428  *
429  * Delivers a request to the X server.
430  *
431  */
432 xcb_dri3_open_cookie_t
433 xcb_dri3_open (xcb_connection_t *c,
434                xcb_drawable_t    drawable,
435                uint32_t          provider);
436 
437 /**
438  *
439  * @param c The connection
440  * @return A cookie
441  *
442  * Delivers a request to the X server.
443  *
444  * This form can be used only if the request will cause
445  * a reply to be generated. Any returned error will be
446  * placed in the event queue.
447  */
448 xcb_dri3_open_cookie_t
449 xcb_dri3_open_unchecked (xcb_connection_t *c,
450                          xcb_drawable_t    drawable,
451                          uint32_t          provider);
452 
453 /**
454  * Return the reply
455  * @param c      The connection
456  * @param cookie The cookie
457  * @param e      The xcb_generic_error_t supplied
458  *
459  * Returns the reply of the request asked by
460  *
461  * The parameter @p e supplied to this function must be NULL if
462  * xcb_dri3_open_unchecked(). is used.
463  * Otherwise, it stores the error if any.
464  *
465  * The returned value must be freed by the caller using free().
466  */
467 xcb_dri3_open_reply_t *
468 xcb_dri3_open_reply (xcb_connection_t        *c,
469                      xcb_dri3_open_cookie_t   cookie  /**< */,
470                      xcb_generic_error_t    **e);
471 
472 /**
473  * Return the reply fds
474  * @param c      The connection
475  * @param reply  The reply
476  *
477  * Returns a pointer to the array of reply fds of the reply.
478  *
479  * The returned value points into the reply and must not be free().
480  * The fds are not managed by xcb. You must close() them before freeing the reply.
481  */
482 int *
483 xcb_dri3_open_reply_fds (xcb_connection_t       *c  /**< */,
484                          xcb_dri3_open_reply_t  *reply);
485 
486 /**
487  *
488  * @param c The connection
489  * @return A cookie
490  *
491  * Delivers a request to the X server.
492  *
493  * This form can be used only if the request will not cause
494  * a reply to be generated. Any returned error will be
495  * saved for handling by xcb_request_check().
496  */
497 xcb_void_cookie_t
498 xcb_dri3_pixmap_from_buffer_checked (xcb_connection_t *c,
499                                      xcb_pixmap_t      pixmap,
500                                      xcb_drawable_t    drawable,
501                                      uint32_t          size,
502                                      uint16_t          width,
503                                      uint16_t          height,
504                                      uint16_t          stride,
505                                      uint8_t           depth,
506                                      uint8_t           bpp,
507                                      int32_t           pixmap_fd);
508 
509 /**
510  *
511  * @param c The connection
512  * @return A cookie
513  *
514  * Delivers a request to the X server.
515  *
516  */
517 xcb_void_cookie_t
518 xcb_dri3_pixmap_from_buffer (xcb_connection_t *c,
519                              xcb_pixmap_t      pixmap,
520                              xcb_drawable_t    drawable,
521                              uint32_t          size,
522                              uint16_t          width,
523                              uint16_t          height,
524                              uint16_t          stride,
525                              uint8_t           depth,
526                              uint8_t           bpp,
527                              int32_t           pixmap_fd);
528 
529 /**
530  *
531  * @param c The connection
532  * @return A cookie
533  *
534  * Delivers a request to the X server.
535  *
536  */
537 xcb_dri3_buffer_from_pixmap_cookie_t
538 xcb_dri3_buffer_from_pixmap (xcb_connection_t *c,
539                              xcb_pixmap_t      pixmap);
540 
541 /**
542  *
543  * @param c The connection
544  * @return A cookie
545  *
546  * Delivers a request to the X server.
547  *
548  * This form can be used only if the request will cause
549  * a reply to be generated. Any returned error will be
550  * placed in the event queue.
551  */
552 xcb_dri3_buffer_from_pixmap_cookie_t
553 xcb_dri3_buffer_from_pixmap_unchecked (xcb_connection_t *c,
554                                        xcb_pixmap_t      pixmap);
555 
556 /**
557  * Return the reply
558  * @param c      The connection
559  * @param cookie The cookie
560  * @param e      The xcb_generic_error_t supplied
561  *
562  * Returns the reply of the request asked by
563  *
564  * The parameter @p e supplied to this function must be NULL if
565  * xcb_dri3_buffer_from_pixmap_unchecked(). is used.
566  * Otherwise, it stores the error if any.
567  *
568  * The returned value must be freed by the caller using free().
569  */
570 xcb_dri3_buffer_from_pixmap_reply_t *
571 xcb_dri3_buffer_from_pixmap_reply (xcb_connection_t                      *c,
572                                    xcb_dri3_buffer_from_pixmap_cookie_t   cookie  /**< */,
573                                    xcb_generic_error_t                  **e);
574 
575 /**
576  * Return the reply fds
577  * @param c      The connection
578  * @param reply  The reply
579  *
580  * Returns a pointer to the array of reply fds of the reply.
581  *
582  * The returned value points into the reply and must not be free().
583  * The fds are not managed by xcb. You must close() them before freeing the reply.
584  */
585 int *
586 xcb_dri3_buffer_from_pixmap_reply_fds (xcb_connection_t                     *c  /**< */,
587                                        xcb_dri3_buffer_from_pixmap_reply_t  *reply);
588 
589 /**
590  *
591  * @param c The connection
592  * @return A cookie
593  *
594  * Delivers a request to the X server.
595  *
596  * This form can be used only if the request will not cause
597  * a reply to be generated. Any returned error will be
598  * saved for handling by xcb_request_check().
599  */
600 xcb_void_cookie_t
601 xcb_dri3_fence_from_fd_checked (xcb_connection_t *c,
602                                 xcb_drawable_t    drawable,
603                                 uint32_t          fence,
604                                 uint8_t           initially_triggered,
605                                 int32_t           fence_fd);
606 
607 /**
608  *
609  * @param c The connection
610  * @return A cookie
611  *
612  * Delivers a request to the X server.
613  *
614  */
615 xcb_void_cookie_t
616 xcb_dri3_fence_from_fd (xcb_connection_t *c,
617                         xcb_drawable_t    drawable,
618                         uint32_t          fence,
619                         uint8_t           initially_triggered,
620                         int32_t           fence_fd);
621 
622 /**
623  *
624  * @param c The connection
625  * @return A cookie
626  *
627  * Delivers a request to the X server.
628  *
629  */
630 xcb_dri3_fd_from_fence_cookie_t
631 xcb_dri3_fd_from_fence (xcb_connection_t *c,
632                         xcb_drawable_t    drawable,
633                         uint32_t          fence);
634 
635 /**
636  *
637  * @param c The connection
638  * @return A cookie
639  *
640  * Delivers a request to the X server.
641  *
642  * This form can be used only if the request will cause
643  * a reply to be generated. Any returned error will be
644  * placed in the event queue.
645  */
646 xcb_dri3_fd_from_fence_cookie_t
647 xcb_dri3_fd_from_fence_unchecked (xcb_connection_t *c,
648                                   xcb_drawable_t    drawable,
649                                   uint32_t          fence);
650 
651 /**
652  * Return the reply
653  * @param c      The connection
654  * @param cookie The cookie
655  * @param e      The xcb_generic_error_t supplied
656  *
657  * Returns the reply of the request asked by
658  *
659  * The parameter @p e supplied to this function must be NULL if
660  * xcb_dri3_fd_from_fence_unchecked(). is used.
661  * Otherwise, it stores the error if any.
662  *
663  * The returned value must be freed by the caller using free().
664  */
665 xcb_dri3_fd_from_fence_reply_t *
666 xcb_dri3_fd_from_fence_reply (xcb_connection_t                 *c,
667                               xcb_dri3_fd_from_fence_cookie_t   cookie  /**< */,
668                               xcb_generic_error_t             **e);
669 
670 /**
671  * Return the reply fds
672  * @param c      The connection
673  * @param reply  The reply
674  *
675  * Returns a pointer to the array of reply fds of the reply.
676  *
677  * The returned value points into the reply and must not be free().
678  * The fds are not managed by xcb. You must close() them before freeing the reply.
679  */
680 int *
681 xcb_dri3_fd_from_fence_reply_fds (xcb_connection_t                *c  /**< */,
682                                   xcb_dri3_fd_from_fence_reply_t  *reply);
683 
684 int
685 xcb_dri3_get_supported_modifiers_sizeof (const void  *_buffer);
686 
687 /**
688  *
689  * @param c The connection
690  * @return A cookie
691  *
692  * Delivers a request to the X server.
693  *
694  */
695 xcb_dri3_get_supported_modifiers_cookie_t
696 xcb_dri3_get_supported_modifiers (xcb_connection_t *c,
697                                   uint32_t          window,
698                                   uint8_t           depth,
699                                   uint8_t           bpp);
700 
701 /**
702  *
703  * @param c The connection
704  * @return A cookie
705  *
706  * Delivers a request to the X server.
707  *
708  * This form can be used only if the request will cause
709  * a reply to be generated. Any returned error will be
710  * placed in the event queue.
711  */
712 xcb_dri3_get_supported_modifiers_cookie_t
713 xcb_dri3_get_supported_modifiers_unchecked (xcb_connection_t *c,
714                                             uint32_t          window,
715                                             uint8_t           depth,
716                                             uint8_t           bpp);
717 
718 uint64_t *
719 xcb_dri3_get_supported_modifiers_window_modifiers (const xcb_dri3_get_supported_modifiers_reply_t *R);
720 
721 int
722 xcb_dri3_get_supported_modifiers_window_modifiers_length (const xcb_dri3_get_supported_modifiers_reply_t *R);
723 
724 xcb_generic_iterator_t
725 xcb_dri3_get_supported_modifiers_window_modifiers_end (const xcb_dri3_get_supported_modifiers_reply_t *R);
726 
727 uint64_t *
728 xcb_dri3_get_supported_modifiers_screen_modifiers (const xcb_dri3_get_supported_modifiers_reply_t *R);
729 
730 int
731 xcb_dri3_get_supported_modifiers_screen_modifiers_length (const xcb_dri3_get_supported_modifiers_reply_t *R);
732 
733 xcb_generic_iterator_t
734 xcb_dri3_get_supported_modifiers_screen_modifiers_end (const xcb_dri3_get_supported_modifiers_reply_t *R);
735 
736 /**
737  * Return the reply
738  * @param c      The connection
739  * @param cookie The cookie
740  * @param e      The xcb_generic_error_t supplied
741  *
742  * Returns the reply of the request asked by
743  *
744  * The parameter @p e supplied to this function must be NULL if
745  * xcb_dri3_get_supported_modifiers_unchecked(). is used.
746  * Otherwise, it stores the error if any.
747  *
748  * The returned value must be freed by the caller using free().
749  */
750 xcb_dri3_get_supported_modifiers_reply_t *
751 xcb_dri3_get_supported_modifiers_reply (xcb_connection_t                           *c,
752                                         xcb_dri3_get_supported_modifiers_cookie_t   cookie  /**< */,
753                                         xcb_generic_error_t                       **e);
754 
755 /**
756  *
757  * @param c The connection
758  * @return A cookie
759  *
760  * Delivers a request to the X server.
761  *
762  * This form can be used only if the request will not cause
763  * a reply to be generated. Any returned error will be
764  * saved for handling by xcb_request_check().
765  */
766 xcb_void_cookie_t
767 xcb_dri3_pixmap_from_buffers_checked (xcb_connection_t *c,
768                                       xcb_pixmap_t      pixmap,
769                                       xcb_window_t      window,
770                                       uint8_t           num_buffers,
771                                       uint16_t          width,
772                                       uint16_t          height,
773                                       uint32_t          stride0,
774                                       uint32_t          offset0,
775                                       uint32_t          stride1,
776                                       uint32_t          offset1,
777                                       uint32_t          stride2,
778                                       uint32_t          offset2,
779                                       uint32_t          stride3,
780                                       uint32_t          offset3,
781                                       uint8_t           depth,
782                                       uint8_t           bpp,
783                                       uint64_t          modifier,
784                                       const int32_t    *buffers);
785 
786 /**
787  *
788  * @param c The connection
789  * @return A cookie
790  *
791  * Delivers a request to the X server.
792  *
793  */
794 xcb_void_cookie_t
795 xcb_dri3_pixmap_from_buffers (xcb_connection_t *c,
796                               xcb_pixmap_t      pixmap,
797                               xcb_window_t      window,
798                               uint8_t           num_buffers,
799                               uint16_t          width,
800                               uint16_t          height,
801                               uint32_t          stride0,
802                               uint32_t          offset0,
803                               uint32_t          stride1,
804                               uint32_t          offset1,
805                               uint32_t          stride2,
806                               uint32_t          offset2,
807                               uint32_t          stride3,
808                               uint32_t          offset3,
809                               uint8_t           depth,
810                               uint8_t           bpp,
811                               uint64_t          modifier,
812                               const int32_t    *buffers);
813 
814 int
815 xcb_dri3_buffers_from_pixmap_sizeof (const void  *_buffer,
816                                      int32_t      buffers);
817 
818 /**
819  *
820  * @param c The connection
821  * @return A cookie
822  *
823  * Delivers a request to the X server.
824  *
825  */
826 xcb_dri3_buffers_from_pixmap_cookie_t
827 xcb_dri3_buffers_from_pixmap (xcb_connection_t *c,
828                               xcb_pixmap_t      pixmap);
829 
830 /**
831  *
832  * @param c The connection
833  * @return A cookie
834  *
835  * Delivers a request to the X server.
836  *
837  * This form can be used only if the request will cause
838  * a reply to be generated. Any returned error will be
839  * placed in the event queue.
840  */
841 xcb_dri3_buffers_from_pixmap_cookie_t
842 xcb_dri3_buffers_from_pixmap_unchecked (xcb_connection_t *c,
843                                         xcb_pixmap_t      pixmap);
844 
845 uint32_t *
846 xcb_dri3_buffers_from_pixmap_strides (const xcb_dri3_buffers_from_pixmap_reply_t *R);
847 
848 int
849 xcb_dri3_buffers_from_pixmap_strides_length (const xcb_dri3_buffers_from_pixmap_reply_t *R);
850 
851 xcb_generic_iterator_t
852 xcb_dri3_buffers_from_pixmap_strides_end (const xcb_dri3_buffers_from_pixmap_reply_t *R);
853 
854 uint32_t *
855 xcb_dri3_buffers_from_pixmap_offsets (const xcb_dri3_buffers_from_pixmap_reply_t *R);
856 
857 int
858 xcb_dri3_buffers_from_pixmap_offsets_length (const xcb_dri3_buffers_from_pixmap_reply_t *R);
859 
860 xcb_generic_iterator_t
861 xcb_dri3_buffers_from_pixmap_offsets_end (const xcb_dri3_buffers_from_pixmap_reply_t *R);
862 
863 int32_t *
864 xcb_dri3_buffers_from_pixmap_buffers (const xcb_dri3_buffers_from_pixmap_reply_t *R);
865 
866 int
867 xcb_dri3_buffers_from_pixmap_buffers_length (const xcb_dri3_buffers_from_pixmap_reply_t *R);
868 
869 xcb_generic_iterator_t
870 xcb_dri3_buffers_from_pixmap_buffers_end (const xcb_dri3_buffers_from_pixmap_reply_t *R);
871 
872 /**
873  * Return the reply
874  * @param c      The connection
875  * @param cookie The cookie
876  * @param e      The xcb_generic_error_t supplied
877  *
878  * Returns the reply of the request asked by
879  *
880  * The parameter @p e supplied to this function must be NULL if
881  * xcb_dri3_buffers_from_pixmap_unchecked(). is used.
882  * Otherwise, it stores the error if any.
883  *
884  * The returned value must be freed by the caller using free().
885  */
886 xcb_dri3_buffers_from_pixmap_reply_t *
887 xcb_dri3_buffers_from_pixmap_reply (xcb_connection_t                       *c,
888                                     xcb_dri3_buffers_from_pixmap_cookie_t   cookie  /**< */,
889                                     xcb_generic_error_t                   **e);
890 
891 /**
892  * Return the reply fds
893  * @param c      The connection
894  * @param reply  The reply
895  *
896  * Returns a pointer to the array of reply fds of the reply.
897  *
898  * The returned value points into the reply and must not be free().
899  * The fds are not managed by xcb. You must close() them before freeing the reply.
900  */
901 int *
902 xcb_dri3_buffers_from_pixmap_reply_fds (xcb_connection_t                      *c  /**< */,
903                                         xcb_dri3_buffers_from_pixmap_reply_t  *reply);
904 
905 /**
906  *
907  * @param c The connection
908  * @return A cookie
909  *
910  * Delivers a request to the X server.
911  *
912  * This form can be used only if the request will not cause
913  * a reply to be generated. Any returned error will be
914  * saved for handling by xcb_request_check().
915  */
916 xcb_void_cookie_t
917 xcb_dri3_set_drm_device_in_use_checked (xcb_connection_t *c,
918                                         xcb_window_t      window,
919                                         uint32_t          drmMajor,
920                                         uint32_t          drmMinor);
921 
922 /**
923  *
924  * @param c The connection
925  * @return A cookie
926  *
927  * Delivers a request to the X server.
928  *
929  */
930 xcb_void_cookie_t
931 xcb_dri3_set_drm_device_in_use (xcb_connection_t *c,
932                                 xcb_window_t      window,
933                                 uint32_t          drmMajor,
934                                 uint32_t          drmMinor);
935 
936 /**
937  *
938  * @param c The connection
939  * @return A cookie
940  *
941  * Delivers a request to the X server.
942  *
943  * This form can be used only if the request will not cause
944  * a reply to be generated. Any returned error will be
945  * saved for handling by xcb_request_check().
946  */
947 xcb_void_cookie_t
948 xcb_dri3_import_syncobj_checked (xcb_connection_t   *c,
949                                  xcb_dri3_syncobj_t  syncobj,
950                                  xcb_drawable_t      drawable,
951                                  int32_t             syncobj_fd);
952 
953 /**
954  *
955  * @param c The connection
956  * @return A cookie
957  *
958  * Delivers a request to the X server.
959  *
960  */
961 xcb_void_cookie_t
962 xcb_dri3_import_syncobj (xcb_connection_t   *c,
963                          xcb_dri3_syncobj_t  syncobj,
964                          xcb_drawable_t      drawable,
965                          int32_t             syncobj_fd);
966 
967 /**
968  *
969  * @param c The connection
970  * @return A cookie
971  *
972  * Delivers a request to the X server.
973  *
974  * This form can be used only if the request will not cause
975  * a reply to be generated. Any returned error will be
976  * saved for handling by xcb_request_check().
977  */
978 xcb_void_cookie_t
979 xcb_dri3_free_syncobj_checked (xcb_connection_t   *c,
980                                xcb_dri3_syncobj_t  syncobj);
981 
982 /**
983  *
984  * @param c The connection
985  * @return A cookie
986  *
987  * Delivers a request to the X server.
988  *
989  */
990 xcb_void_cookie_t
991 xcb_dri3_free_syncobj (xcb_connection_t   *c,
992                        xcb_dri3_syncobj_t  syncobj);
993 
994 
995 #ifdef __cplusplus
996 }
997 #endif
998 
999 #endif
1000 
1001 /**
1002  * @}
1003  */
1004