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 _DRI3_PROTO_H_
     24 #define _DRI3_PROTO_H_
     25 
     26 #define DRI3_NAME			"DRI3"
     27 #define DRI3_MAJOR			1
     28 #define DRI3_MINOR			4
     29 
     30 #define DRI3NumberErrors		0
     31 #define DRI3NumberEvents		0
     32 
     33 #define X_DRI3QueryVersion		0
     34 #define X_DRI3Open			1
     35 #define X_DRI3PixmapFromBuffer          2
     36 #define X_DRI3BufferFromPixmap          3
     37 #define X_DRI3FenceFromFD               4
     38 #define X_DRI3FDFromFence               5
     39 
     40 /* v1.2 */
     41 #define xDRI3GetSupportedModifiers      6
     42 #define xDRI3PixmapFromBuffers          7
     43 #define xDRI3BuffersFromPixmap          8
     44 
     45 /* v1.3 */
     46 #define xDRI3SetDRMDeviceInUse  9
     47 
     48 /* v1.4 */
     49 #define xDRI3ImportSyncobj		10
     50 #define xDRI3FreeSyncobj		11
     51 
     52 #define DRI3NumberRequests		12
     53 
     54 #define DRI3Syncobj CARD32
     55 
     56 typedef struct {
     57     CARD8   reqType;
     58     CARD8   dri3ReqType;
     59     CARD16  length;
     60     CARD32  majorVersion;
     61     CARD32  minorVersion;
     62 } xDRI3QueryVersionReq;
     63 #define sz_xDRI3QueryVersionReq   12
     64 
     65 typedef struct {
     66     BYTE    type;   /* X_Reply */
     67     BYTE    pad1;
     68     CARD16  sequenceNumber;
     69     CARD32  length;
     70     CARD32  majorVersion;
     71     CARD32  minorVersion;
     72     CARD32  pad2;
     73     CARD32  pad3;
     74     CARD32  pad4;
     75     CARD32  pad5;
     76 } xDRI3QueryVersionReply;
     77 #define sz_xDRI3QueryVersionReply	32
     78 
     79 typedef struct {
     80     CARD8   reqType;
     81     CARD8   dri3ReqType;
     82     CARD16  length;
     83     CARD32  drawable;
     84     CARD32  provider;
     85 } xDRI3OpenReq;
     86 #define sz_xDRI3OpenReq	12
     87 
     88 typedef struct {
     89     BYTE    type;   /* X_Reply */
     90     CARD8   nfd;
     91     CARD16  sequenceNumber;
     92     CARD32  length;
     93     CARD32  pad2;
     94     CARD32  pad3;
     95     CARD32  pad4;
     96     CARD32  pad5;
     97     CARD32  pad6;
     98     CARD32  pad7;
     99 } xDRI3OpenReply;
    100 #define sz_xDRI3OpenReply	32
    101 
    102 typedef struct {
    103     CARD8   reqType;
    104     CARD8   dri3ReqType;
    105     CARD16  length;
    106     CARD32  pixmap;
    107     CARD32  drawable;
    108     CARD32  size;
    109     CARD16  width;
    110     CARD16  height;
    111     CARD16  stride;
    112     CARD8   depth;
    113     CARD8   bpp;
    114 } xDRI3PixmapFromBufferReq;
    115 
    116 #define sz_xDRI3PixmapFromBufferReq     24
    117 
    118 typedef struct {
    119     CARD8   reqType;
    120     CARD8   dri3ReqType;
    121     CARD16  length;
    122     CARD32  pixmap;
    123 } xDRI3BufferFromPixmapReq;
    124 #define sz_xDRI3BufferFromPixmapReq     8
    125 
    126 typedef struct {
    127     BYTE    type;   /* X_Reply */
    128     CARD8   nfd;    /* Number of file descriptors returned (1) */
    129     CARD16  sequenceNumber;
    130     CARD32  length;
    131     CARD32  size;
    132     CARD16  width;
    133     CARD16  height;
    134     CARD16  stride;
    135     CARD8   depth;
    136     CARD8   bpp;
    137     CARD32  pad20;
    138     CARD32  pad24;
    139     CARD32  pad28;
    140 } xDRI3BufferFromPixmapReply;
    141 #define sz_xDRI3BufferFromPixmapReply   32
    142 
    143 typedef struct {
    144     CARD8   reqType;
    145     CARD8   dri3ReqType;
    146     CARD16  length;
    147     CARD32  drawable;
    148     CARD32  fence;
    149     BOOL    initially_triggered;
    150     CARD8   pad13;
    151     CARD16  pad14;
    152 } xDRI3FenceFromFDReq;
    153 
    154 #define sz_xDRI3FenceFromFDReq  16
    155 
    156 typedef struct {
    157     CARD8   reqType;
    158     CARD8   dri3ReqType;
    159     CARD16  length;
    160     CARD32  drawable;
    161     CARD32  fence;
    162 } xDRI3FDFromFenceReq;
    163 
    164 #define sz_xDRI3FDFromFenceReq  12
    165 
    166 typedef struct {
    167     BYTE    type;   /* X_Reply */
    168     CARD8   nfd;    /* Number of file descriptors returned (1) */
    169     CARD16  sequenceNumber;
    170     CARD32  length;
    171     CARD32  pad08;
    172     CARD32  pad12;
    173     CARD32  pad16;
    174     CARD32  pad20;
    175     CARD32  pad24;
    176     CARD32  pad28;
    177 } xDRI3FDFromFenceReply;
    178 
    179 #define sz_xDRI3FDFromFenceReply   32
    180 
    181 /* v1.2 */
    182 
    183 typedef struct {
    184     CARD8   reqType;
    185     CARD8   dri3ReqType;
    186     CARD16  length;
    187     CARD32  window;
    188     CARD8   depth;
    189     CARD8   bpp;
    190     CARD16  pad10;
    191 } xDRI3GetSupportedModifiersReq;
    192 #define sz_xDRI3GetSupportedModifiersReq     12
    193 
    194 typedef struct {
    195     BYTE    type;   /* X_Reply */
    196     CARD8   pad1;
    197     CARD16  sequenceNumber;
    198     CARD32  length;
    199     CARD32  numWindowModifiers;
    200     CARD32  numScreenModifiers;
    201     CARD32  pad16;
    202     CARD32  pad20;
    203     CARD32  pad24;
    204     CARD32  pad28;
    205 } xDRI3GetSupportedModifiersReply;
    206 #define sz_xDRI3GetSupportedModifiersReply   32
    207 
    208 typedef struct {
    209     CARD8   reqType;
    210     CARD8   dri3ReqType;
    211     CARD16  length;
    212     CARD32  pixmap;
    213     CARD32  window;
    214     CARD8   num_buffers; /* Number of file descriptors passed */
    215     CARD8   pad13;
    216     CARD16  pad14;
    217     CARD16  width;
    218     CARD16  height;
    219     CARD32  stride0;
    220     CARD32  offset0;
    221     CARD32  stride1;
    222     CARD32  offset1;
    223     CARD32  stride2;
    224     CARD32  offset2;
    225     CARD32  stride3;
    226     CARD32  offset3;
    227     CARD8   depth;
    228     CARD8   bpp;
    229     CARD16  pad54;
    230     CARD64  modifier;
    231 } xDRI3PixmapFromBuffersReq;
    232 #define sz_xDRI3PixmapFromBuffersReq 64
    233 
    234 typedef struct {
    235     CARD8   reqType;
    236     CARD8   dri3ReqType;
    237     CARD16  length;
    238     CARD32  pixmap;
    239 } xDRI3BuffersFromPixmapReq;
    240 #define sz_xDRI3BuffersFromPixmapReq     8
    241 
    242 typedef struct {
    243     BYTE    type;   /* X_Reply */
    244     CARD8   nfd;    /* Number of file descriptors returned */
    245     CARD16  sequenceNumber;
    246     CARD32  length;
    247     CARD16  width;
    248     CARD16  height;
    249     CARD32  pad12;
    250     CARD64  modifier;
    251     CARD8   depth;
    252     CARD8   bpp;
    253     CARD16  pad26;
    254     CARD32  pad28;
    255 } xDRI3BuffersFromPixmapReply;
    256 #define sz_xDRI3BuffersFromPixmapReply   32
    257 
    258 /* v1.3 */
    259 
    260 typedef struct {
    261     CARD8   reqType;
    262     CARD8   dri3ReqType;
    263     CARD16  length;
    264     CARD32  window;
    265     CARD32  drmMajor;
    266     CARD32  drmMinor;
    267 } xDRI3SetDRMDeviceInUseReq;
    268 #define sz_xDRI3SetDRMDeviceInUseReq    16
    269 
    270 /* v1.4 */
    271 typedef struct {
    272     CARD8        reqType;
    273     CARD8        dri3ReqType;
    274     CARD16       length;
    275     DRI3Syncobj  syncobj;
    276     CARD32       drawable;
    277 } xDRI3ImportSyncobjReq;
    278 #define sz_xDRI3ImportSyncobjReq 12
    279 
    280 typedef struct {
    281     CARD8        reqType;
    282     CARD8        dri3ReqType;
    283     CARD16       length;
    284     DRI3Syncobj  syncobj;
    285 } xDRI3FreeSyncobjReq;
    286 #define sz_xDRI3FreeSyncobjReq 8
    287 
    288 #endif
    289