1/**************************************************************************
2
3Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
4Copyright 2000 VA Linux Systems, Inc.
5All Rights Reserved.
6
7Permission is hereby granted, free of charge, to any person obtaining a
8copy of this software and associated documentation files (the
9"Software"), to deal in the Software without restriction, including
10without limitation the rights to use, copy, modify, merge, publish,
11distribute, sub license, and/or sell copies of the Software, and to
12permit persons to whom the Software is furnished to do so, subject to
13the following conditions:
14
15The above copyright notice and this permission notice (including the
16next paragraph) shall be included in all copies or substantial portions
17of the Software.
18
19THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
22IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
23ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
27**************************************************************************/
28
29/*
30 * Authors:
31 *   Kevin E. Martin <martin@valinux.com>
32 *   Jens Owen <jens@tungstengraphics.com>
33 *   Rickard E. (Rik) Fiath <faith@valinux.com>
34 *
35 */
36
37#ifndef _XF86DRISTR_H_
38#define _XF86DRISTR_H_
39
40#include "xf86dri.h"
41
42#define XF86DRINAME "XFree86-DRI"
43
44/* The DRI version number.  This was originally set to be the same of the
45 * XFree86 version number.  However, this version is really indepedent of
46 * the XFree86 version.
47 *
48 * Version History:
49 *    4.0.0: Original
50 *    4.0.1: Patch to bump clipstamp when windows are destroyed, 28 May 02
51 *    4.1.0: Add transition from single to multi in DRMInfo rec, 24 Jun 02
52 */
53#define XF86DRI_MAJOR_VERSION	4
54#define XF86DRI_MINOR_VERSION	1
55#define XF86DRI_PATCH_VERSION	0
56
57typedef struct _XF86DRIQueryVersion
58{
59   CARD8 reqType;               /* always DRIReqCode */
60   CARD8 driReqType;            /* always X_DRIQueryVersion */
61   CARD16 length B16;
62} xXF86DRIQueryVersionReq;
63#define sz_xXF86DRIQueryVersionReq	4
64
65typedef struct
66{
67   BYTE type;                   /* X_Reply */
68   BOOL pad1;
69   CARD16 sequenceNumber B16;
70   CARD32 length B32;
71   CARD16 majorVersion B16;     /* major version of DRI protocol */
72   CARD16 minorVersion B16;     /* minor version of DRI protocol */
73   CARD32 patchVersion B32;     /* patch version of DRI protocol */
74   CARD32 pad3 B32;
75   CARD32 pad4 B32;
76   CARD32 pad5 B32;
77   CARD32 pad6 B32;
78} xXF86DRIQueryVersionReply;
79#define sz_xXF86DRIQueryVersionReply	32
80
81typedef struct _XF86DRIQueryDirectRenderingCapable
82{
83   CARD8 reqType;               /* always DRIReqCode */
84   CARD8 driReqType;            /* X_DRIQueryDirectRenderingCapable */
85   CARD16 length B16;
86   CARD32 screen B32;
87} xXF86DRIQueryDirectRenderingCapableReq;
88#define sz_xXF86DRIQueryDirectRenderingCapableReq	8
89
90typedef struct
91{
92   BYTE type;                   /* X_Reply */
93   BOOL pad1;
94   CARD16 sequenceNumber B16;
95   CARD32 length B32;
96   BOOL isCapable;
97   BOOL pad2;
98   BOOL pad3;
99   BOOL pad4;
100   CARD32 pad5 B32;
101   CARD32 pad6 B32;
102   CARD32 pad7 B32;
103   CARD32 pad8 B32;
104   CARD32 pad9 B32;
105} xXF86DRIQueryDirectRenderingCapableReply;
106#define sz_xXF86DRIQueryDirectRenderingCapableReply	32
107
108typedef struct _XF86DRIOpenConnection
109{
110   CARD8 reqType;               /* always DRIReqCode */
111   CARD8 driReqType;            /* always X_DRIOpenConnection */
112   CARD16 length B16;
113   CARD32 screen B32;
114} xXF86DRIOpenConnectionReq;
115#define sz_xXF86DRIOpenConnectionReq	8
116
117typedef struct
118{
119   BYTE type;                   /* X_Reply */
120   BOOL pad1;
121   CARD16 sequenceNumber B16;
122   CARD32 length B32;
123   CARD32 hSAREALow B32;
124   CARD32 hSAREAHigh B32;
125   CARD32 busIdStringLength B32;
126   CARD32 pad6 B32;
127   CARD32 pad7 B32;
128   CARD32 pad8 B32;
129} xXF86DRIOpenConnectionReply;
130#define sz_xXF86DRIOpenConnectionReply	32
131
132typedef struct _XF86DRIAuthConnection
133{
134   CARD8 reqType;               /* always DRIReqCode */
135   CARD8 driReqType;            /* always X_DRICloseConnection */
136   CARD16 length B16;
137   CARD32 screen B32;
138   CARD32 magic B32;
139} xXF86DRIAuthConnectionReq;
140#define sz_xXF86DRIAuthConnectionReq	12
141
142typedef struct
143{
144   BYTE type;
145   BOOL pad1;
146   CARD16 sequenceNumber B16;
147   CARD32 length B32;
148   CARD32 authenticated B32;
149   CARD32 pad2 B32;
150   CARD32 pad3 B32;
151   CARD32 pad4 B32;
152   CARD32 pad5 B32;
153   CARD32 pad6 B32;
154} xXF86DRIAuthConnectionReply;
155#define zx_xXF86DRIAuthConnectionReply  32
156
157typedef struct _XF86DRICloseConnection
158{
159   CARD8 reqType;               /* always DRIReqCode */
160   CARD8 driReqType;            /* always X_DRICloseConnection */
161   CARD16 length B16;
162   CARD32 screen B32;
163} xXF86DRICloseConnectionReq;
164#define sz_xXF86DRICloseConnectionReq	8
165
166typedef struct _XF86DRIGetClientDriverName
167{
168   CARD8 reqType;               /* always DRIReqCode */
169   CARD8 driReqType;            /* always X_DRIGetClientDriverName */
170   CARD16 length B16;
171   CARD32 screen B32;
172} xXF86DRIGetClientDriverNameReq;
173#define sz_xXF86DRIGetClientDriverNameReq	8
174
175typedef struct
176{
177   BYTE type;                   /* X_Reply */
178   BOOL pad1;
179   CARD16 sequenceNumber B16;
180   CARD32 length B32;
181   CARD32 ddxDriverMajorVersion B32;
182   CARD32 ddxDriverMinorVersion B32;
183   CARD32 ddxDriverPatchVersion B32;
184   CARD32 clientDriverNameLength B32;
185   CARD32 pad5 B32;
186   CARD32 pad6 B32;
187} xXF86DRIGetClientDriverNameReply;
188#define sz_xXF86DRIGetClientDriverNameReply	32
189
190typedef struct _XF86DRICreateContext
191{
192   CARD8 reqType;               /* always DRIReqCode */
193   CARD8 driReqType;            /* always X_DRICreateContext */
194   CARD16 length B16;
195   CARD32 screen B32;
196   CARD32 visual B32;
197   CARD32 context B32;
198} xXF86DRICreateContextReq;
199#define sz_xXF86DRICreateContextReq	16
200
201typedef struct
202{
203   BYTE type;                   /* X_Reply */
204   BOOL pad1;
205   CARD16 sequenceNumber B16;
206   CARD32 length B32;
207   CARD32 hHWContext B32;
208   CARD32 pad2 B32;
209   CARD32 pad3 B32;
210   CARD32 pad4 B32;
211   CARD32 pad5 B32;
212   CARD32 pad6 B32;
213} xXF86DRICreateContextReply;
214#define sz_xXF86DRICreateContextReply	32
215
216typedef struct _XF86DRIDestroyContext
217{
218   CARD8 reqType;               /* always DRIReqCode */
219   CARD8 driReqType;            /* always X_DRIDestroyContext */
220   CARD16 length B16;
221   CARD32 screen B32;
222   CARD32 context B32;
223} xXF86DRIDestroyContextReq;
224#define sz_xXF86DRIDestroyContextReq	12
225
226typedef struct _XF86DRICreateDrawable
227{
228   CARD8 reqType;               /* always DRIReqCode */
229   CARD8 driReqType;            /* always X_DRICreateDrawable */
230   CARD16 length B16;
231   CARD32 screen B32;
232   CARD32 drawable B32;
233} xXF86DRICreateDrawableReq;
234#define sz_xXF86DRICreateDrawableReq	12
235
236typedef struct
237{
238   BYTE type;                   /* X_Reply */
239   BOOL pad1;
240   CARD16 sequenceNumber B16;
241   CARD32 length B32;
242   CARD32 hHWDrawable B32;
243   CARD32 pad2 B32;
244   CARD32 pad3 B32;
245   CARD32 pad4 B32;
246   CARD32 pad5 B32;
247   CARD32 pad6 B32;
248} xXF86DRICreateDrawableReply;
249#define sz_xXF86DRICreateDrawableReply	32
250
251typedef struct _XF86DRIDestroyDrawable
252{
253   CARD8 reqType;               /* always DRIReqCode */
254   CARD8 driReqType;            /* always X_DRIDestroyDrawable */
255   CARD16 length B16;
256   CARD32 screen B32;
257   CARD32 drawable B32;
258} xXF86DRIDestroyDrawableReq;
259#define sz_xXF86DRIDestroyDrawableReq	12
260
261typedef struct _XF86DRIGetDrawableInfo
262{
263   CARD8 reqType;               /* always DRIReqCode */
264   CARD8 driReqType;            /* always X_DRIGetDrawableInfo */
265   CARD16 length B16;
266   CARD32 screen B32;
267   CARD32 drawable B32;
268} xXF86DRIGetDrawableInfoReq;
269#define sz_xXF86DRIGetDrawableInfoReq	12
270
271typedef struct
272{
273   BYTE type;                   /* X_Reply */
274   BOOL pad1;
275   CARD16 sequenceNumber B16;
276   CARD32 length B32;
277   CARD32 drawableTableIndex B32;
278   CARD32 drawableTableStamp B32;
279   INT16 drawableX B16;
280   INT16 drawableY B16;
281   INT16 drawableWidth B16;
282   INT16 drawableHeight B16;
283   CARD32 numClipRects B32;
284   INT16 backX B16;
285   INT16 backY B16;
286   CARD32 numBackClipRects B32;
287} xXF86DRIGetDrawableInfoReply;
288
289#define sz_xXF86DRIGetDrawableInfoReply	36
290
291
292typedef struct _XF86DRIGetDeviceInfo
293{
294   CARD8 reqType;               /* always DRIReqCode */
295   CARD8 driReqType;            /* always X_DRIGetDeviceInfo */
296   CARD16 length B16;
297   CARD32 screen B32;
298} xXF86DRIGetDeviceInfoReq;
299#define sz_xXF86DRIGetDeviceInfoReq	8
300
301typedef struct
302{
303   BYTE type;                   /* X_Reply */
304   BOOL pad1;
305   CARD16 sequenceNumber B16;
306   CARD32 length B32;
307   CARD32 hFrameBufferLow B32;
308   CARD32 hFrameBufferHigh B32;
309   CARD32 framebufferOrigin B32;
310   CARD32 framebufferSize B32;
311   CARD32 framebufferStride B32;
312   CARD32 devPrivateSize B32;
313} xXF86DRIGetDeviceInfoReply;
314#define sz_xXF86DRIGetDeviceInfoReply	32
315
316typedef struct _XF86DRIOpenFullScreen
317{
318   CARD8 reqType;               /* always DRIReqCode */
319   CARD8 driReqType;            /* always X_DRIOpenFullScreen */
320   CARD16 length B16;
321   CARD32 screen B32;
322   CARD32 drawable B32;
323} xXF86DRIOpenFullScreenReq;
324#define sz_xXF86DRIOpenFullScreenReq    12
325
326typedef struct
327{
328   BYTE type;
329   BOOL pad1;
330   CARD16 sequenceNumber B16;
331   CARD32 length B32;
332   CARD32 isFullScreen B32;
333   CARD32 pad2 B32;
334   CARD32 pad3 B32;
335   CARD32 pad4 B32;
336   CARD32 pad5 B32;
337   CARD32 pad6 B32;
338} xXF86DRIOpenFullScreenReply;
339#define sz_xXF86DRIOpenFullScreenReply  32
340
341typedef struct _XF86DRICloseFullScreen
342{
343   CARD8 reqType;               /* always DRIReqCode */
344   CARD8 driReqType;            /* always X_DRICloseFullScreen */
345   CARD16 length B16;
346   CARD32 screen B32;
347   CARD32 drawable B32;
348} xXF86DRICloseFullScreenReq;
349#define sz_xXF86DRICloseFullScreenReq   12
350
351typedef struct
352{
353   BYTE type;
354   BOOL pad1;
355   CARD16 sequenceNumber B16;
356   CARD32 length B32;
357   CARD32 pad2 B32;
358   CARD32 pad3 B32;
359   CARD32 pad4 B32;
360   CARD32 pad5 B32;
361   CARD32 pad6 B32;
362   CARD32 pad7 B32;
363} xXF86DRICloseFullScreenReply;
364#define sz_xXF86DRICloseFullScreenReply  32
365
366
367#endif /* _XF86DRISTR_H_ */
368