File indexing completed on 2025-01-18 10:14:38
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef __PRESENT_H
0013 #define __PRESENT_H
0014
0015 #include "xcb.h"
0016 #include "xproto.h"
0017 #include "randr.h"
0018 #include "xfixes.h"
0019 #include "sync.h"
0020 #include "dri3.h"
0021
0022 #ifdef __cplusplus
0023 extern "C" {
0024 #endif
0025
0026 #define XCB_PRESENT_MAJOR_VERSION 1
0027 #define XCB_PRESENT_MINOR_VERSION 4
0028
0029 extern xcb_extension_t xcb_present_id;
0030
0031 typedef enum xcb_present_event_enum_t {
0032 XCB_PRESENT_EVENT_CONFIGURE_NOTIFY = 0,
0033 XCB_PRESENT_EVENT_COMPLETE_NOTIFY = 1,
0034 XCB_PRESENT_EVENT_IDLE_NOTIFY = 2,
0035 XCB_PRESENT_EVENT_REDIRECT_NOTIFY = 3
0036 } xcb_present_event_enum_t;
0037
0038 typedef enum xcb_present_event_mask_t {
0039 XCB_PRESENT_EVENT_MASK_NO_EVENT = 0,
0040 XCB_PRESENT_EVENT_MASK_CONFIGURE_NOTIFY = 1,
0041 XCB_PRESENT_EVENT_MASK_COMPLETE_NOTIFY = 2,
0042 XCB_PRESENT_EVENT_MASK_IDLE_NOTIFY = 4,
0043 XCB_PRESENT_EVENT_MASK_REDIRECT_NOTIFY = 8
0044 } xcb_present_event_mask_t;
0045
0046 typedef enum xcb_present_option_t {
0047 XCB_PRESENT_OPTION_NONE = 0,
0048 XCB_PRESENT_OPTION_ASYNC = 1,
0049 XCB_PRESENT_OPTION_COPY = 2,
0050 XCB_PRESENT_OPTION_UST = 4,
0051 XCB_PRESENT_OPTION_SUBOPTIMAL = 8,
0052 XCB_PRESENT_OPTION_ASYNC_MAY_TEAR = 16
0053 } xcb_present_option_t;
0054
0055 typedef enum xcb_present_capability_t {
0056 XCB_PRESENT_CAPABILITY_NONE = 0,
0057 XCB_PRESENT_CAPABILITY_ASYNC = 1,
0058 XCB_PRESENT_CAPABILITY_FENCE = 2,
0059 XCB_PRESENT_CAPABILITY_UST = 4,
0060 XCB_PRESENT_CAPABILITY_ASYNC_MAY_TEAR = 8,
0061 XCB_PRESENT_CAPABILITY_SYNCOBJ = 16
0062 } xcb_present_capability_t;
0063
0064 typedef enum xcb_present_complete_kind_t {
0065 XCB_PRESENT_COMPLETE_KIND_PIXMAP = 0,
0066 XCB_PRESENT_COMPLETE_KIND_NOTIFY_MSC = 1
0067 } xcb_present_complete_kind_t;
0068
0069 typedef enum xcb_present_complete_mode_t {
0070 XCB_PRESENT_COMPLETE_MODE_COPY = 0,
0071 XCB_PRESENT_COMPLETE_MODE_FLIP = 1,
0072 XCB_PRESENT_COMPLETE_MODE_SKIP = 2,
0073 XCB_PRESENT_COMPLETE_MODE_SUBOPTIMAL_COPY = 3
0074 } xcb_present_complete_mode_t;
0075
0076
0077
0078
0079 typedef struct xcb_present_notify_t {
0080 xcb_window_t window;
0081 uint32_t serial;
0082 } xcb_present_notify_t;
0083
0084
0085
0086
0087 typedef struct xcb_present_notify_iterator_t {
0088 xcb_present_notify_t *data;
0089 int rem;
0090 int index;
0091 } xcb_present_notify_iterator_t;
0092
0093
0094
0095
0096 typedef struct xcb_present_query_version_cookie_t {
0097 unsigned int sequence;
0098 } xcb_present_query_version_cookie_t;
0099
0100
0101 #define XCB_PRESENT_QUERY_VERSION 0
0102
0103
0104
0105
0106 typedef struct xcb_present_query_version_request_t {
0107 uint8_t major_opcode;
0108 uint8_t minor_opcode;
0109 uint16_t length;
0110 uint32_t major_version;
0111 uint32_t minor_version;
0112 } xcb_present_query_version_request_t;
0113
0114
0115
0116
0117 typedef struct xcb_present_query_version_reply_t {
0118 uint8_t response_type;
0119 uint8_t pad0;
0120 uint16_t sequence;
0121 uint32_t length;
0122 uint32_t major_version;
0123 uint32_t minor_version;
0124 } xcb_present_query_version_reply_t;
0125
0126
0127 #define XCB_PRESENT_PIXMAP 1
0128
0129
0130
0131
0132 typedef struct xcb_present_pixmap_request_t {
0133 uint8_t major_opcode;
0134 uint8_t minor_opcode;
0135 uint16_t length;
0136 xcb_window_t window;
0137 xcb_pixmap_t pixmap;
0138 uint32_t serial;
0139 xcb_xfixes_region_t valid;
0140 xcb_xfixes_region_t update;
0141 int16_t x_off;
0142 int16_t y_off;
0143 xcb_randr_crtc_t target_crtc;
0144 xcb_sync_fence_t wait_fence;
0145 xcb_sync_fence_t idle_fence;
0146 uint32_t options;
0147 uint8_t pad0[4];
0148 uint64_t target_msc;
0149 uint64_t divisor;
0150 uint64_t remainder;
0151 } xcb_present_pixmap_request_t;
0152
0153
0154 #define XCB_PRESENT_NOTIFY_MSC 2
0155
0156
0157
0158
0159 typedef struct xcb_present_notify_msc_request_t {
0160 uint8_t major_opcode;
0161 uint8_t minor_opcode;
0162 uint16_t length;
0163 xcb_window_t window;
0164 uint32_t serial;
0165 uint8_t pad0[4];
0166 uint64_t target_msc;
0167 uint64_t divisor;
0168 uint64_t remainder;
0169 } xcb_present_notify_msc_request_t;
0170
0171 typedef uint32_t xcb_present_event_t;
0172
0173
0174
0175
0176 typedef struct xcb_present_event_iterator_t {
0177 xcb_present_event_t *data;
0178 int rem;
0179 int index;
0180 } xcb_present_event_iterator_t;
0181
0182
0183 #define XCB_PRESENT_SELECT_INPUT 3
0184
0185
0186
0187
0188 typedef struct xcb_present_select_input_request_t {
0189 uint8_t major_opcode;
0190 uint8_t minor_opcode;
0191 uint16_t length;
0192 xcb_present_event_t eid;
0193 xcb_window_t window;
0194 uint32_t event_mask;
0195 } xcb_present_select_input_request_t;
0196
0197
0198
0199
0200 typedef struct xcb_present_query_capabilities_cookie_t {
0201 unsigned int sequence;
0202 } xcb_present_query_capabilities_cookie_t;
0203
0204
0205 #define XCB_PRESENT_QUERY_CAPABILITIES 4
0206
0207
0208
0209
0210 typedef struct xcb_present_query_capabilities_request_t {
0211 uint8_t major_opcode;
0212 uint8_t minor_opcode;
0213 uint16_t length;
0214 uint32_t target;
0215 } xcb_present_query_capabilities_request_t;
0216
0217
0218
0219
0220 typedef struct xcb_present_query_capabilities_reply_t {
0221 uint8_t response_type;
0222 uint8_t pad0;
0223 uint16_t sequence;
0224 uint32_t length;
0225 uint32_t capabilities;
0226 } xcb_present_query_capabilities_reply_t;
0227
0228
0229 #define XCB_PRESENT_PIXMAP_SYNCED 5
0230
0231
0232
0233
0234 typedef struct xcb_present_pixmap_synced_request_t {
0235 uint8_t major_opcode;
0236 uint8_t minor_opcode;
0237 uint16_t length;
0238 xcb_window_t window;
0239 xcb_pixmap_t pixmap;
0240 uint32_t serial;
0241 xcb_xfixes_region_t valid;
0242 xcb_xfixes_region_t update;
0243 int16_t x_off;
0244 int16_t y_off;
0245 xcb_randr_crtc_t target_crtc;
0246 xcb_dri3_syncobj_t acquire_syncobj;
0247 xcb_dri3_syncobj_t release_syncobj;
0248 uint64_t acquire_point;
0249 uint64_t release_point;
0250 uint32_t options;
0251 uint8_t pad0[4];
0252 uint64_t target_msc;
0253 uint64_t divisor;
0254 uint64_t remainder;
0255 } xcb_present_pixmap_synced_request_t;
0256
0257
0258 #define XCB_PRESENT_GENERIC 0
0259
0260
0261
0262
0263 typedef struct xcb_present_generic_event_t {
0264 uint8_t response_type;
0265 uint8_t extension;
0266 uint16_t sequence;
0267 uint32_t length;
0268 uint16_t evtype;
0269 uint8_t pad0[2];
0270 xcb_present_event_t event;
0271 } xcb_present_generic_event_t;
0272
0273
0274 #define XCB_PRESENT_CONFIGURE_NOTIFY 0
0275
0276
0277
0278
0279 typedef struct xcb_present_configure_notify_event_t {
0280 uint8_t response_type;
0281 uint8_t extension;
0282 uint16_t sequence;
0283 uint32_t length;
0284 uint16_t event_type;
0285 uint8_t pad0[2];
0286 xcb_present_event_t event;
0287 xcb_window_t window;
0288 int16_t x;
0289 int16_t y;
0290 uint16_t width;
0291 uint16_t height;
0292 int16_t off_x;
0293 int16_t off_y;
0294 uint32_t full_sequence;
0295 uint16_t pixmap_width;
0296 uint16_t pixmap_height;
0297 uint32_t pixmap_flags;
0298 } xcb_present_configure_notify_event_t;
0299
0300
0301 #define XCB_PRESENT_COMPLETE_NOTIFY 1
0302
0303
0304
0305
0306 typedef struct xcb_present_complete_notify_event_t {
0307 uint8_t response_type;
0308 uint8_t extension;
0309 uint16_t sequence;
0310 uint32_t length;
0311 uint16_t event_type;
0312 uint8_t kind;
0313 uint8_t mode;
0314 xcb_present_event_t event;
0315 xcb_window_t window;
0316 uint32_t serial;
0317 uint64_t ust;
0318 uint32_t full_sequence;
0319 uint64_t msc;
0320 } XCB_PACKED xcb_present_complete_notify_event_t;
0321
0322
0323 #define XCB_PRESENT_IDLE_NOTIFY 2
0324
0325
0326
0327
0328 typedef struct xcb_present_idle_notify_event_t {
0329 uint8_t response_type;
0330 uint8_t extension;
0331 uint16_t sequence;
0332 uint32_t length;
0333 uint16_t event_type;
0334 uint8_t pad0[2];
0335 xcb_present_event_t event;
0336 xcb_window_t window;
0337 uint32_t serial;
0338 xcb_pixmap_t pixmap;
0339 xcb_sync_fence_t idle_fence;
0340 uint32_t full_sequence;
0341 } xcb_present_idle_notify_event_t;
0342
0343
0344 #define XCB_PRESENT_REDIRECT_NOTIFY 3
0345
0346
0347
0348
0349 typedef struct xcb_present_redirect_notify_event_t {
0350 uint8_t response_type;
0351 uint8_t extension;
0352 uint16_t sequence;
0353 uint32_t length;
0354 uint16_t event_type;
0355 uint8_t update_window;
0356 uint8_t pad0;
0357 xcb_present_event_t event;
0358 xcb_window_t event_window;
0359 xcb_window_t window;
0360 xcb_pixmap_t pixmap;
0361 uint32_t serial;
0362 uint32_t full_sequence;
0363 xcb_xfixes_region_t valid_region;
0364 xcb_xfixes_region_t update_region;
0365 xcb_rectangle_t valid_rect;
0366 xcb_rectangle_t update_rect;
0367 int16_t x_off;
0368 int16_t y_off;
0369 xcb_randr_crtc_t target_crtc;
0370 xcb_sync_fence_t wait_fence;
0371 xcb_sync_fence_t idle_fence;
0372 uint32_t options;
0373 uint8_t pad1[4];
0374 uint64_t target_msc;
0375 uint64_t divisor;
0376 uint64_t remainder;
0377 } XCB_PACKED xcb_present_redirect_notify_event_t;
0378
0379
0380
0381
0382
0383
0384
0385
0386
0387 void
0388 xcb_present_notify_next (xcb_present_notify_iterator_t *i);
0389
0390
0391
0392
0393
0394
0395
0396
0397
0398
0399 xcb_generic_iterator_t
0400 xcb_present_notify_end (xcb_present_notify_iterator_t i);
0401
0402
0403
0404
0405
0406
0407
0408
0409
0410 xcb_present_query_version_cookie_t
0411 xcb_present_query_version (xcb_connection_t *c,
0412 uint32_t major_version,
0413 uint32_t minor_version);
0414
0415
0416
0417
0418
0419
0420
0421
0422
0423
0424
0425
0426 xcb_present_query_version_cookie_t
0427 xcb_present_query_version_unchecked (xcb_connection_t *c,
0428 uint32_t major_version,
0429 uint32_t minor_version);
0430
0431
0432
0433
0434
0435
0436
0437
0438
0439
0440
0441
0442
0443
0444
0445 xcb_present_query_version_reply_t *
0446 xcb_present_query_version_reply (xcb_connection_t *c,
0447 xcb_present_query_version_cookie_t cookie ,
0448 xcb_generic_error_t **e);
0449
0450 int
0451 xcb_present_pixmap_sizeof (const void *_buffer,
0452 uint32_t notifies_len);
0453
0454
0455
0456
0457
0458
0459
0460
0461
0462
0463
0464
0465 xcb_void_cookie_t
0466 xcb_present_pixmap_checked (xcb_connection_t *c,
0467 xcb_window_t window,
0468 xcb_pixmap_t pixmap,
0469 uint32_t serial,
0470 xcb_xfixes_region_t valid,
0471 xcb_xfixes_region_t update,
0472 int16_t x_off,
0473 int16_t y_off,
0474 xcb_randr_crtc_t target_crtc,
0475 xcb_sync_fence_t wait_fence,
0476 xcb_sync_fence_t idle_fence,
0477 uint32_t options,
0478 uint64_t target_msc,
0479 uint64_t divisor,
0480 uint64_t remainder,
0481 uint32_t notifies_len,
0482 const xcb_present_notify_t *notifies);
0483
0484
0485
0486
0487
0488
0489
0490
0491
0492 xcb_void_cookie_t
0493 xcb_present_pixmap (xcb_connection_t *c,
0494 xcb_window_t window,
0495 xcb_pixmap_t pixmap,
0496 uint32_t serial,
0497 xcb_xfixes_region_t valid,
0498 xcb_xfixes_region_t update,
0499 int16_t x_off,
0500 int16_t y_off,
0501 xcb_randr_crtc_t target_crtc,
0502 xcb_sync_fence_t wait_fence,
0503 xcb_sync_fence_t idle_fence,
0504 uint32_t options,
0505 uint64_t target_msc,
0506 uint64_t divisor,
0507 uint64_t remainder,
0508 uint32_t notifies_len,
0509 const xcb_present_notify_t *notifies);
0510
0511 xcb_present_notify_t *
0512 xcb_present_pixmap_notifies (const xcb_present_pixmap_request_t *R);
0513
0514 int
0515 xcb_present_pixmap_notifies_length (const xcb_present_pixmap_request_t *R);
0516
0517 xcb_present_notify_iterator_t
0518 xcb_present_pixmap_notifies_iterator (const xcb_present_pixmap_request_t *R);
0519
0520
0521
0522
0523
0524
0525
0526
0527
0528
0529
0530
0531 xcb_void_cookie_t
0532 xcb_present_notify_msc_checked (xcb_connection_t *c,
0533 xcb_window_t window,
0534 uint32_t serial,
0535 uint64_t target_msc,
0536 uint64_t divisor,
0537 uint64_t remainder);
0538
0539
0540
0541
0542
0543
0544
0545
0546
0547 xcb_void_cookie_t
0548 xcb_present_notify_msc (xcb_connection_t *c,
0549 xcb_window_t window,
0550 uint32_t serial,
0551 uint64_t target_msc,
0552 uint64_t divisor,
0553 uint64_t remainder);
0554
0555
0556
0557
0558
0559
0560
0561
0562
0563 void
0564 xcb_present_event_next (xcb_present_event_iterator_t *i);
0565
0566
0567
0568
0569
0570
0571
0572
0573
0574
0575 xcb_generic_iterator_t
0576 xcb_present_event_end (xcb_present_event_iterator_t i);
0577
0578
0579
0580
0581
0582
0583
0584
0585
0586
0587
0588
0589 xcb_void_cookie_t
0590 xcb_present_select_input_checked (xcb_connection_t *c,
0591 xcb_present_event_t eid,
0592 xcb_window_t window,
0593 uint32_t event_mask);
0594
0595
0596
0597
0598
0599
0600
0601
0602
0603 xcb_void_cookie_t
0604 xcb_present_select_input (xcb_connection_t *c,
0605 xcb_present_event_t eid,
0606 xcb_window_t window,
0607 uint32_t event_mask);
0608
0609
0610
0611
0612
0613
0614
0615
0616
0617 xcb_present_query_capabilities_cookie_t
0618 xcb_present_query_capabilities (xcb_connection_t *c,
0619 uint32_t target);
0620
0621
0622
0623
0624
0625
0626
0627
0628
0629
0630
0631
0632 xcb_present_query_capabilities_cookie_t
0633 xcb_present_query_capabilities_unchecked (xcb_connection_t *c,
0634 uint32_t target);
0635
0636
0637
0638
0639
0640
0641
0642
0643
0644
0645
0646
0647
0648
0649
0650 xcb_present_query_capabilities_reply_t *
0651 xcb_present_query_capabilities_reply (xcb_connection_t *c,
0652 xcb_present_query_capabilities_cookie_t cookie ,
0653 xcb_generic_error_t **e);
0654
0655 int
0656 xcb_present_pixmap_synced_sizeof (const void *_buffer,
0657 uint32_t notifies_len);
0658
0659
0660
0661
0662
0663
0664
0665
0666
0667
0668
0669
0670 xcb_void_cookie_t
0671 xcb_present_pixmap_synced_checked (xcb_connection_t *c,
0672 xcb_window_t window,
0673 xcb_pixmap_t pixmap,
0674 uint32_t serial,
0675 xcb_xfixes_region_t valid,
0676 xcb_xfixes_region_t update,
0677 int16_t x_off,
0678 int16_t y_off,
0679 xcb_randr_crtc_t target_crtc,
0680 xcb_dri3_syncobj_t acquire_syncobj,
0681 xcb_dri3_syncobj_t release_syncobj,
0682 uint64_t acquire_point,
0683 uint64_t release_point,
0684 uint32_t options,
0685 uint64_t target_msc,
0686 uint64_t divisor,
0687 uint64_t remainder,
0688 uint32_t notifies_len,
0689 const xcb_present_notify_t *notifies);
0690
0691
0692
0693
0694
0695
0696
0697
0698
0699 xcb_void_cookie_t
0700 xcb_present_pixmap_synced (xcb_connection_t *c,
0701 xcb_window_t window,
0702 xcb_pixmap_t pixmap,
0703 uint32_t serial,
0704 xcb_xfixes_region_t valid,
0705 xcb_xfixes_region_t update,
0706 int16_t x_off,
0707 int16_t y_off,
0708 xcb_randr_crtc_t target_crtc,
0709 xcb_dri3_syncobj_t acquire_syncobj,
0710 xcb_dri3_syncobj_t release_syncobj,
0711 uint64_t acquire_point,
0712 uint64_t release_point,
0713 uint32_t options,
0714 uint64_t target_msc,
0715 uint64_t divisor,
0716 uint64_t remainder,
0717 uint32_t notifies_len,
0718 const xcb_present_notify_t *notifies);
0719
0720 xcb_present_notify_t *
0721 xcb_present_pixmap_synced_notifies (const xcb_present_pixmap_synced_request_t *R);
0722
0723 int
0724 xcb_present_pixmap_synced_notifies_length (const xcb_present_pixmap_synced_request_t *R);
0725
0726 xcb_present_notify_iterator_t
0727 xcb_present_pixmap_synced_notifies_iterator (const xcb_present_pixmap_synced_request_t *R);
0728
0729 int
0730 xcb_present_redirect_notify_sizeof (const void *_buffer,
0731 uint32_t notifies_len);
0732
0733 xcb_present_notify_t *
0734 xcb_present_redirect_notify_notifies (const xcb_present_redirect_notify_event_t *R);
0735
0736 int
0737 xcb_present_redirect_notify_notifies_length (const xcb_present_redirect_notify_event_t *R);
0738
0739 xcb_present_notify_iterator_t
0740 xcb_present_redirect_notify_notifies_iterator (const xcb_present_redirect_notify_event_t *R);
0741
0742
0743 #ifdef __cplusplus
0744 }
0745 #endif
0746
0747 #endif
0748
0749
0750
0751