cd82afbdfccbcd2957b695028c5a27eeb97f701e
[framework/uifw/xorg/proto/x11proto-dri2.git] / dri2proto.h
1 /*
2  * Copyright © 2008 Red Hat, Inc.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the "Soft-
6  * ware"), to deal in the Software without restriction, including without
7  * limitation the rights to use, copy, modify, merge, publish, distribute,
8  * and/or sell copies of the Software, and to permit persons to whom the
9  * Software is furnished to do so, provided that the above copyright
10  * notice(s) and this permission notice appear in all copies of the Soft-
11  * ware and that both the above copyright notice(s) and this permission
12  * notice appear in supporting documentation.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
16  * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
17  * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
18  * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
19  * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
22  * MANCE OF THIS SOFTWARE.
23  *
24  * Except as contained in this notice, the name of a copyright holder shall
25  * not be used in advertising or otherwise to promote the sale, use or
26  * other dealings in this Software without prior written authorization of
27  * the copyright holder.
28  *
29  * Authors:
30  *   Kristian Høgsberg (krh@redhat.com)
31  */
32
33 #ifndef _DRI2_PROTO_H_
34 #define _DRI2_PROTO_H_
35
36 #define DRI2_NAME                       "DRI2"
37 #define DRI2_MAJOR                      1
38 #define DRI2_MINOR                      3
39
40 #define DRI2NumberErrors                0
41 #define DRI2NumberEvents                2
42 #define DRI2NumberRequests              13
43
44 #define X_DRI2QueryVersion              0
45 #define X_DRI2Connect                   1
46 #define X_DRI2Authenticate              2
47 #define X_DRI2CreateDrawable            3
48 #define X_DRI2DestroyDrawable           4
49 #define X_DRI2GetBuffers                5
50 #define X_DRI2CopyRegion                6
51 #define X_DRI2GetBuffersWithFormat      7
52 #define X_DRI2SwapBuffers               8
53 #define X_DRI2GetMSC                    9
54 #define X_DRI2WaitMSC                   10
55 #define X_DRI2WaitSBC                   11
56 #define X_DRI2SwapInterval              12
57
58 /*
59  * Events
60  */
61 #define DRI2_BufferSwapComplete 0
62 #define DRI2_InvalidateBuffers  1
63
64 typedef struct {
65     CARD32  attachment B32;
66     CARD32  name B32;
67     CARD32  pitch B32;
68     CARD32  cpp B32;
69     CARD32  flags B32;
70 } xDRI2Buffer;
71
72 typedef struct {
73     CARD8   reqType;
74     CARD8   dri2ReqType;
75     CARD16  length B16;
76     CARD32  majorVersion B32;
77     CARD32  minorVersion B32;
78 } xDRI2QueryVersionReq;
79 #define sz_xDRI2QueryVersionReq   12
80
81 typedef struct {
82     BYTE    type;   /* X_Reply */
83     BYTE    pad1;
84     CARD16  sequenceNumber B16;
85     CARD32  length B32;
86     CARD32  majorVersion B32;
87     CARD32  minorVersion B32;
88     CARD32  pad2 B32;
89     CARD32  pad3 B32;
90     CARD32  pad4 B32;
91     CARD32  pad5 B32;
92 } xDRI2QueryVersionReply;
93 #define sz_xDRI2QueryVersionReply       32
94
95 typedef struct {
96     CARD8   reqType;
97     CARD8   dri2ReqType;
98     CARD16  length B16;
99     CARD32  window B32;
100     CARD32  driverType B32;
101 } xDRI2ConnectReq;
102 #define sz_xDRI2ConnectReq      12
103
104 typedef struct {
105     BYTE    type;   /* X_Reply */
106     BYTE    pad1;
107     CARD16  sequenceNumber B16;
108     CARD32  length B32;
109     CARD32  driverNameLength B32;
110     CARD32  deviceNameLength B32;
111     CARD32  pad2 B32;
112     CARD32  pad3 B32;
113     CARD32  pad4 B32;
114     CARD32  pad5 B32;
115 } xDRI2ConnectReply;
116 #define sz_xDRI2ConnectReply    32
117
118 typedef struct {
119     CARD8   reqType;
120     CARD8   dri2ReqType;
121     CARD16  length B16;
122     CARD32  window B32;
123     CARD32  magic B32;
124 } xDRI2AuthenticateReq;
125 #define sz_xDRI2AuthenticateReq   12
126
127 typedef struct {
128     BYTE    type;   /* X_Reply */
129     BYTE    pad1;
130     CARD16  sequenceNumber B16;
131     CARD32  length B32;
132     CARD32  authenticated B32;
133     CARD32  pad2 B32;
134     CARD32  pad3 B32;
135     CARD32  pad4 B32;
136     CARD32  pad5 B32;
137     CARD32  pad6 B32;
138 } xDRI2AuthenticateReply;
139 #define sz_xDRI2AuthenticateReply       32
140
141 typedef struct {
142     CARD8   reqType;
143     CARD8   dri2ReqType;
144     CARD16  length B16;
145     CARD32  drawable B32;
146 } xDRI2CreateDrawableReq;
147 #define sz_xDRI2CreateDrawableReq   8
148
149 typedef struct {
150     CARD8   reqType;
151     CARD8   dri2ReqType;
152     CARD16  length B16;
153     CARD32  drawable B32;
154 } xDRI2DestroyDrawableReq;
155 #define sz_xDRI2DestroyDrawableReq   8
156
157 typedef struct {
158     CARD8   reqType;
159     CARD8   dri2ReqType;
160     CARD16  length B16;
161     CARD32  drawable B32;
162     CARD32  count B32;
163 } xDRI2GetBuffersReq;
164 #define sz_xDRI2GetBuffersReq   12
165
166 typedef struct {
167     BYTE    type;   /* X_Reply */
168     BYTE    pad1;
169     CARD16  sequenceNumber B16;
170     CARD32  length B32;
171     CARD32  width B32;
172     CARD32  height B32;
173     CARD32  count B32;
174     CARD32  pad2 B32;
175     CARD32  pad3 B32;
176     CARD32  pad4 B32;
177 } xDRI2GetBuffersReply;
178 #define sz_xDRI2GetBuffersReply 32
179
180 typedef struct {
181     CARD8   reqType;
182     CARD8   dri2ReqType;
183     CARD16  length B16;
184     CARD32  drawable B32;
185     CARD32  region B32;
186     CARD32  dest B32;
187     CARD32  src B32;
188 } xDRI2CopyRegionReq;
189 #define sz_xDRI2CopyRegionReq   20
190
191 typedef struct {
192     BYTE    type;   /* X_Reply */
193     BYTE    pad1;
194     CARD16  sequenceNumber B16;
195     CARD32  length B32;
196     CARD32  pad2 B32;
197     CARD32  pad3 B32;
198     CARD32  pad4 B32;
199     CARD32  pad5 B32;
200     CARD32  pad6 B32;
201     CARD32  pad7 B32;
202 } xDRI2CopyRegionReply;
203 #define sz_xDRI2CopyRegionReply 32
204
205 typedef struct {
206     CARD8   reqType;
207     CARD8   dri2ReqType;
208     CARD16  length B16;
209     CARD32  drawable B32;
210     CARD32  target_msc_hi B32;
211     CARD32  target_msc_lo B32;
212     CARD32  divisor_hi B32;
213     CARD32  divisor_lo B32;
214     CARD32  remainder_hi B32;
215     CARD32  remainder_lo B32;
216 } xDRI2SwapBuffersReq;
217 #define sz_xDRI2SwapBuffersReq  32
218
219 typedef struct {
220     BYTE    type;   /* X_Reply */
221     BYTE    pad1;
222     CARD16  sequenceNumber B16;
223     CARD32  length B32;
224     CARD32  swap_hi B32;
225     CARD32  swap_lo B32;
226     CARD32  pad2 B32;
227     CARD32  pad3 B32;
228     CARD32  pad4 B32;
229     CARD32  pad5 B32;
230 } xDRI2SwapBuffersReply;
231 #define sz_xDRI2SwapBuffersReply 32
232
233 typedef struct {
234     CARD8   reqType;
235     CARD8   dri2ReqType;
236     CARD16  length B16;
237     CARD32  drawable B32;
238 } xDRI2GetMSCReq;
239 #define sz_xDRI2GetMSCReq 8
240
241 typedef struct {
242     CARD8   reqType;
243     CARD8   dri2ReqType;
244     CARD16  length B16;
245     CARD32  drawable B32;
246     CARD32  target_msc_hi B32;
247     CARD32  target_msc_lo B32;
248     CARD32  divisor_hi B32;
249     CARD32  divisor_lo B32;
250     CARD32  remainder_hi B32;
251     CARD32  remainder_lo B32;
252 } xDRI2WaitMSCReq;
253 #define sz_xDRI2WaitMSCReq 32
254
255 typedef struct {
256     CARD8   reqType;
257     CARD8   dri2ReqType;
258     CARD16  length B16;
259     CARD32  drawable B32;
260     CARD32  target_sbc_hi B32;
261     CARD32  target_sbc_lo B32;
262 } xDRI2WaitSBCReq;
263 #define sz_xDRI2WaitSBCReq 16
264
265 typedef struct {
266     CARD8   type;
267     CARD8   pad1;
268     CARD16  sequenceNumber B16;
269     CARD32  length B32;
270     CARD32  ust_hi B32;
271     CARD32  ust_lo B32;
272     CARD32  msc_hi B32;
273     CARD32  msc_lo B32;
274     CARD32  sbc_hi B32;
275     CARD32  sbc_lo B32;
276 } xDRI2MSCReply;
277 #define sz_xDRI2MSCReply 32
278
279 typedef struct {
280     CARD8   reqType;
281     CARD8   dri2ReqType;
282     CARD16  length B16;
283     CARD32  drawable B32;
284     CARD32  interval B32;
285 } xDRI2SwapIntervalReq;
286 #define sz_xDRI2SwapIntervalReq 12
287
288 typedef struct {
289     CARD8 type;
290     CARD8 pad;
291     CARD16 sequenceNumber B16;
292     CARD16 event_type B16;
293     CARD16 pad2;
294     CARD32 drawable B32;
295     CARD32 ust_hi B32;
296     CARD32 ust_lo B32;
297     CARD32 msc_hi B32;
298     CARD32 msc_lo B32;
299     CARD32 sbc_hi B32;
300     CARD32 sbc_lo B32;
301 } xDRI2BufferSwapComplete;
302 #define sz_xDRI2BufferSwapComplete 32
303
304 typedef struct {
305     CARD8 type;
306     CARD8 pad;
307     CARD16 sequenceNumber B16;
308     CARD16 event_type B16;
309     CARD16 pad2;
310     CARD32 drawable B32;
311     CARD32 ust_hi B32;
312     CARD32 ust_lo B32;
313     CARD32 msc_hi B32;
314     CARD32 msc_lo B32;
315     CARD32 sbc B32;
316 } xDRI2BufferSwapComplete2;
317 #define sz_xDRI2BufferSwapComplete2 32
318
319 typedef struct {
320     CARD8 type;
321     CARD8 pad;
322     CARD16 sequenceNumber B16;
323     CARD32 drawable B32;
324     CARD32 pad1 B32;
325     CARD32 pad2 B32;
326     CARD32 pad3 B32;
327     CARD32 pad4 B32;
328     CARD32 pad5 B32;
329     CARD32 pad6 B32;
330 } xDRI2InvalidateBuffers;
331 #define sz_xDRI2InvalidateBuffers 32
332
333 #endif