1/* $XFree86: xc/lib/GL/dri/xf86dristr.h,v 1.10 2002/10/30 12:51:25 alanh Exp $ */
2/**************************************************************************
3
4Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
5Copyright 2000 VA Linux Systems, Inc.
6Copyright 2007 Intel Corporation
7All Rights Reserved.
8
9Permission is hereby granted, free of charge, to any person obtaining a
10copy of this software and associated documentation files (the
11"Software"), to deal in the Software without restriction, including
12without limitation the rights to use, copy, modify, merge, publish,
13distribute, sub license, and/or sell copies of the Software, and to
14permit persons to whom the Software is furnished to do so, subject to
15the following conditions:
16
17The above copyright notice and this permission notice (including the
18next paragraph) shall be included in all copies or substantial portions
19of the Software.
20
21THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
24IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
25ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
29**************************************************************************/
30
31/*
32 * Authors:
33 *   Kevin E. Martin <martin@valinux.com>
34 *   Jens Owen <jens@tungstengraphics.com>
35 *   Rickard E. (Rik) Fiath <faith@valinux.com>
36 *
37 */
38
39#ifndef _VA_DRISTR_H_
40#define _VA_DRISTR_H_
41
42#include "va_dri.h"
43
44#define VA_DRINAME "XFree86-DRI"
45
46/* The DRI version number.  This was originally set to be the same of the
47 * XFree86 version number.  However, this version is really indepedent of
48 * the XFree86 version.
49 *
50 * Version History:
51 *    4.0.0: Original
52 *    4.0.1: Patch to bump clipstamp when windows are destroyed, 28 May 02
53 *    4.1.0: Add transition from single to multi in DRMInfo rec, 24 Jun 02
54 */
55#define VA_DRI_MAJOR_VERSION	4
56#define VA_DRI_MINOR_VERSION	1
57#define VA_DRI_PATCH_VERSION	0
58
59typedef struct _VA_DRIQueryVersion {
60    CARD8	reqType;		/* always DRIReqCode */
61    CARD8	driReqType;		/* always X_DRIQueryVersion */
62    CARD16	length B16;
63} xVA_DRIQueryVersionReq;
64#define sz_xVA_DRIQueryVersionReq	4
65
66typedef struct {
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} xVA_DRIQueryVersionReply;
79#define sz_xVA_DRIQueryVersionReply	32
80
81typedef struct _VA_DRIQueryDirectRenderingCapable {
82    CARD8	reqType;		/* always DRIReqCode */
83    CARD8	driReqType;		/* X_DRIQueryDirectRenderingCapable */
84    CARD16	length B16;
85    CARD32	screen B32;
86} xVA_DRIQueryDirectRenderingCapableReq;
87#define sz_xVA_DRIQueryDirectRenderingCapableReq	8
88
89typedef struct {
90    BYTE	type;			/* X_Reply */
91    BOOL	pad1;
92    CARD16	sequenceNumber B16;
93    CARD32	length B32;
94    BOOL	isCapable;
95    BOOL	pad2;
96    BOOL	pad3;
97    BOOL	pad4;
98    CARD32	pad5 B32;
99    CARD32	pad6 B32;
100    CARD32	pad7 B32;
101    CARD32	pad8 B32;
102    CARD32	pad9 B32;
103} xVA_DRIQueryDirectRenderingCapableReply;
104#define sz_xVA_DRIQueryDirectRenderingCapableReply	32
105
106typedef struct _VA_DRIOpenConnection {
107    CARD8	reqType;		/* always DRIReqCode */
108    CARD8	driReqType;		/* always X_DRIOpenConnection */
109    CARD16	length B16;
110    CARD32	screen B32;
111} xVA_DRIOpenConnectionReq;
112#define sz_xVA_DRIOpenConnectionReq	8
113
114typedef struct {
115    BYTE	type;			/* X_Reply */
116    BOOL	pad1;
117    CARD16	sequenceNumber B16;
118    CARD32	length B32;
119    CARD32	hSAREALow B32;
120    CARD32	hSAREAHigh B32;
121    CARD32	busIdStringLength B32;
122    CARD32	pad6 B32;
123    CARD32	pad7 B32;
124    CARD32	pad8 B32;
125} xVA_DRIOpenConnectionReply;
126#define sz_xVA_DRIOpenConnectionReply	32
127
128typedef struct _VA_DRIAuthConnection {
129    CARD8	reqType;		/* always DRIReqCode */
130    CARD8	driReqType;		/* always X_DRICloseConnection */
131    CARD16	length B16;
132    CARD32	screen B32;
133    CARD32      magic B32;
134} xVA_DRIAuthConnectionReq;
135#define sz_xVA_DRIAuthConnectionReq	12
136
137typedef struct {
138    BYTE        type;
139    BOOL        pad1;
140    CARD16      sequenceNumber B16;
141    CARD32      length B32;
142    CARD32      authenticated B32;
143    CARD32      pad2 B32;
144    CARD32      pad3 B32;
145    CARD32      pad4 B32;
146    CARD32      pad5 B32;
147    CARD32      pad6 B32;
148} xVA_DRIAuthConnectionReply;
149#define zx_xVA_DRIAuthConnectionReply  32
150
151typedef struct _VA_DRICloseConnection {
152    CARD8	reqType;		/* always DRIReqCode */
153    CARD8	driReqType;		/* always X_DRICloseConnection */
154    CARD16	length B16;
155    CARD32	screen B32;
156} xVA_DRICloseConnectionReq;
157#define sz_xVA_DRICloseConnectionReq	8
158
159typedef struct _VA_DRIGetClientDriverName {
160    CARD8	reqType;		/* always DRIReqCode */
161    CARD8	driReqType;		/* always X_DRIGetClientDriverName */
162    CARD16	length B16;
163    CARD32	screen B32;
164} xVA_DRIGetClientDriverNameReq;
165#define sz_xVA_DRIGetClientDriverNameReq	8
166
167typedef struct {
168    BYTE	type;			/* X_Reply */
169    BOOL	pad1;
170    CARD16	sequenceNumber B16;
171    CARD32	length B32;
172    CARD32	ddxDriverMajorVersion B32;
173    CARD32	ddxDriverMinorVersion B32;
174    CARD32	ddxDriverPatchVersion B32;
175    CARD32	clientDriverNameLength B32;
176    CARD32	pad5 B32;
177    CARD32	pad6 B32;
178} xVA_DRIGetClientDriverNameReply;
179#define sz_xVA_DRIGetClientDriverNameReply	32
180
181typedef struct _VA_DRICreateContext {
182    CARD8	reqType;		/* always DRIReqCode */
183    CARD8	driReqType;		/* always X_DRICreateContext */
184    CARD16	length B16;
185    CARD32	screen B32;
186    CARD32	visual B32;
187    CARD32	context B32;
188} xVA_DRICreateContextReq;
189#define sz_xVA_DRICreateContextReq	16
190
191typedef struct {
192    BYTE	type;			/* X_Reply */
193    BOOL	pad1;
194    CARD16	sequenceNumber B16;
195    CARD32	length B32;
196    CARD32	hHWContext B32;
197    CARD32	pad2 B32;
198    CARD32	pad3 B32;
199    CARD32	pad4 B32;
200    CARD32	pad5 B32;
201    CARD32	pad6 B32;
202} xVA_DRICreateContextReply;
203#define sz_xVA_DRICreateContextReply	32
204
205typedef struct _VA_DRIDestroyContext {
206    CARD8	reqType;		/* always DRIReqCode */
207    CARD8	driReqType;		/* always X_DRIDestroyContext */
208    CARD16	length B16;
209    CARD32	screen B32;
210    CARD32	context B32;
211} xVA_DRIDestroyContextReq;
212#define sz_xVA_DRIDestroyContextReq	12
213
214typedef struct _VA_DRICreateDrawable {
215    CARD8	reqType;		/* always DRIReqCode */
216    CARD8	driReqType;		/* always X_DRICreateDrawable */
217    CARD16	length B16;
218    CARD32	screen B32;
219    CARD32	drawable B32;
220} xVA_DRICreateDrawableReq;
221#define sz_xVA_DRICreateDrawableReq	12
222
223typedef struct {
224    BYTE	type;			/* X_Reply */
225    BOOL	pad1;
226    CARD16	sequenceNumber B16;
227    CARD32	length B32;
228    CARD32	hHWDrawable B32;
229    CARD32	pad2 B32;
230    CARD32	pad3 B32;
231    CARD32	pad4 B32;
232    CARD32	pad5 B32;
233    CARD32	pad6 B32;
234} xVA_DRICreateDrawableReply;
235#define sz_xVA_DRICreateDrawableReply	32
236
237typedef struct _VA_DRIDestroyDrawable {
238    CARD8	reqType;		/* always DRIReqCode */
239    CARD8	driReqType;		/* always X_DRIDestroyDrawable */
240    CARD16	length B16;
241    CARD32	screen B32;
242    CARD32	drawable B32;
243} xVA_DRIDestroyDrawableReq;
244#define sz_xVA_DRIDestroyDrawableReq	12
245
246typedef struct _VA_DRIGetDrawableInfo {
247    CARD8	reqType;		/* always DRIReqCode */
248    CARD8	driReqType;		/* always X_DRIGetDrawableInfo */
249    CARD16	length B16;
250    CARD32	screen B32;
251    CARD32	drawable B32;
252} xVA_DRIGetDrawableInfoReq;
253#define sz_xVA_DRIGetDrawableInfoReq	12
254
255typedef struct {
256    BYTE	type;			/* X_Reply */
257    BOOL	pad1;
258    CARD16	sequenceNumber B16;
259    CARD32	length B32;
260    CARD32	drawableTableIndex B32;
261    CARD32	drawableTableStamp B32;
262    INT16	drawableX B16;
263    INT16	drawableY B16;
264    INT16	drawableWidth B16;
265    INT16	drawableHeight B16;
266    CARD32	numClipRects B32;
267    INT16       backX B16;
268    INT16       backY B16;
269    CARD32      numBackClipRects B32;
270} xVA_DRIGetDrawableInfoReply;
271
272#define sz_xVA_DRIGetDrawableInfoReply	36
273
274
275typedef struct _VA_DRIGetDeviceInfo {
276    CARD8	reqType;		/* always DRIReqCode */
277    CARD8	driReqType;		/* always X_DRIGetDeviceInfo */
278    CARD16	length B16;
279    CARD32	screen B32;
280} xVA_DRIGetDeviceInfoReq;
281#define sz_xVA_DRIGetDeviceInfoReq	8
282
283typedef struct {
284    BYTE	type;			/* X_Reply */
285    BOOL	pad1;
286    CARD16	sequenceNumber B16;
287    CARD32	length B32;
288    CARD32	hFrameBufferLow B32;
289    CARD32	hFrameBufferHigh B32;
290    CARD32	framebufferOrigin B32;
291    CARD32	framebufferSize B32;
292    CARD32	framebufferStride B32;
293    CARD32	devPrivateSize B32;
294} xVA_DRIGetDeviceInfoReply;
295#define sz_xVA_DRIGetDeviceInfoReply	32
296
297typedef struct _VA_DRIOpenFullScreen {
298    CARD8       reqType;	/* always DRIReqCode */
299    CARD8       driReqType;	/* always X_DRIOpenFullScreen */
300    CARD16      length B16;
301    CARD32      screen B32;
302    CARD32      drawable B32;
303} xVA_DRIOpenFullScreenReq;
304#define sz_xVA_DRIOpenFullScreenReq    12
305
306typedef struct {
307    BYTE        type;
308    BOOL        pad1;
309    CARD16      sequenceNumber B16;
310    CARD32      length B32;
311    CARD32      isFullScreen B32;
312    CARD32      pad2 B32;
313    CARD32      pad3 B32;
314    CARD32      pad4 B32;
315    CARD32      pad5 B32;
316    CARD32      pad6 B32;
317} xVA_DRIOpenFullScreenReply;
318#define sz_xVA_DRIOpenFullScreenReply  32
319
320typedef struct _VA_DRICloseFullScreen {
321    CARD8       reqType;	/* always DRIReqCode */
322    CARD8       driReqType;	/* always X_DRICloseFullScreen */
323    CARD16      length B16;
324    CARD32      screen B32;
325    CARD32      drawable B32;
326} xVA_DRICloseFullScreenReq;
327#define sz_xVA_DRICloseFullScreenReq   12
328
329typedef struct {
330    BYTE        type;
331    BOOL        pad1;
332    CARD16      sequenceNumber B16;
333    CARD32      length B32;
334    CARD32      pad2 B32;
335    CARD32      pad3 B32;
336    CARD32      pad4 B32;
337    CARD32      pad5 B32;
338    CARD32      pad6 B32;
339    CARD32      pad7 B32;
340} xVA_DRICloseFullScreenReply;
341#define sz_xVA_DRICloseFullScreenReply  32
342
343
344#endif /* _VA_DRISTR_H_ */
345