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