1/*
2
3Copyright (c) 1995  Jon Tombs
4Copyright (c) 1995  XFree86 Inc.
5
6*/
7
8#ifndef _XF86DGAPROTO_H_
9#define _XF86DGAPROTO_H_
10
11#include <X11/extensions/xf86dga1proto.h>
12#include <X11/extensions/xf86dgaconst.h>
13
14#define XF86DGANAME "XFree86-DGA"
15
16#define XDGA_MAJOR_VERSION	2	/* current version numbers */
17#define XDGA_MINOR_VERSION	0
18
19
20typedef struct _XDGAQueryVersion {
21    CARD8	reqType;		/* always DGAReqCode */
22    CARD8	dgaReqType;		/* always X_DGAQueryVersion */
23    CARD16	length;
24} xXDGAQueryVersionReq;
25#define sz_xXDGAQueryVersionReq		4
26
27typedef struct {
28    BYTE	type;			/* X_Reply */
29    BOOL	pad1;
30    CARD16	sequenceNumber;
31    CARD32	length;
32    CARD16	majorVersion;		/* major version of DGA protocol */
33    CARD16	minorVersion;		/* minor version of DGA protocol */
34    CARD32	pad2;
35    CARD32	pad3;
36    CARD32	pad4;
37    CARD32	pad5;
38    CARD32	pad6;
39} xXDGAQueryVersionReply;
40#define sz_xXDGAQueryVersionReply	32
41
42typedef struct _XDGAQueryModes {
43    CARD8	reqType;
44    CARD8	dgaReqType;
45    CARD16	length;
46    CARD32	screen;
47} xXDGAQueryModesReq;
48#define sz_xXDGAQueryModesReq		8
49
50typedef struct {
51    BYTE	type;			/* X_Reply */
52    BOOL	pad1;
53    CARD16	sequenceNumber;
54    CARD32	length;
55    CARD32	number;			/* number of modes available */
56    CARD32	pad2;
57    CARD32	pad3;
58    CARD32	pad4;
59    CARD32	pad5;
60    CARD32	pad6;
61} xXDGAQueryModesReply;
62#define sz_xXDGAQueryModesReply	32
63
64
65typedef struct _XDGASetMode {
66    CARD8	reqType;
67    CARD8	dgaReqType;
68    CARD16	length;
69    CARD32	screen;
70    CARD32	mode;			/* mode number to init */
71    CARD32	pid;			/* Pixmap descriptor */
72} xXDGASetModeReq;
73#define sz_xXDGASetModeReq		16
74
75typedef struct {
76    BYTE	type;			/* X_Reply */
77    BOOL	pad1;
78    CARD16	sequenceNumber;
79    CARD32	length;
80    CARD32	offset;			/* offset into framebuffer map */
81    CARD32	flags;
82    CARD32	pad2;
83    CARD32	pad3;
84    CARD32	pad4;
85    CARD32	pad5;
86} xXDGASetModeReply;
87#define sz_xXDGASetModeReply	32
88
89typedef struct {
90   CARD8	byte_order;
91   CARD8	depth;
92   CARD16 	num;
93   CARD16	bpp;
94   CARD16	name_size;
95   CARD32	vsync_num;
96   CARD32	vsync_den;
97   CARD32	flags;
98   CARD16	image_width;
99   CARD16	image_height;
100   CARD16	pixmap_width;
101   CARD16	pixmap_height;
102   CARD32	bytes_per_scanline;
103   CARD32	red_mask;
104   CARD32	green_mask;
105   CARD32	blue_mask;
106   CARD16	visual_class;
107   CARD16	pad1;
108   CARD16	viewport_width;
109   CARD16	viewport_height;
110   CARD16	viewport_xstep;
111   CARD16	viewport_ystep;
112   CARD16	viewport_xmax;
113   CARD16	viewport_ymax;
114   CARD32	viewport_flags;
115   CARD32	reserved1;
116   CARD32	reserved2;
117} xXDGAModeInfo;
118#define sz_xXDGAModeInfo 72
119
120typedef struct _XDGAOpenFramebuffer {
121    CARD8	reqType;
122    CARD8	dgaReqType;
123    CARD16	length;
124    CARD32	screen;
125} xXDGAOpenFramebufferReq;
126#define sz_xXDGAOpenFramebufferReq	8
127
128typedef struct {
129    BYTE	type;			/* X_Reply */
130    BOOL	pad1;
131    CARD16	sequenceNumber;
132    CARD32	length;			/* device name size if there is one */
133    CARD32	mem1;			/* physical memory */
134    CARD32	mem2;			/* spillover for _alpha_ */
135    CARD32	size;			/* size of map in bytes */
136    CARD32	offset;			/* optional offset into device */
137    CARD32	extra;			/* extra info associated with the map */
138    CARD32	pad2;
139} xXDGAOpenFramebufferReply;
140#define sz_xXDGAOpenFramebufferReply	32
141
142
143typedef struct _XDGACloseFramebuffer {
144    CARD8	reqType;
145    CARD8	dgaReqType;
146    CARD16	length;
147    CARD32	screen;
148} xXDGACloseFramebufferReq;
149#define sz_xXDGACloseFramebufferReq	8
150
151
152typedef struct _XDGASetViewport {
153    CARD8	reqType;
154    CARD8	dgaReqType;
155    CARD16	length;
156    CARD32	screen;
157    CARD16	x;
158    CARD16	y;
159    CARD32	flags;
160} xXDGASetViewportReq;
161#define sz_xXDGASetViewportReq	16
162
163
164typedef struct _XDGAInstallColormap {
165    CARD8	reqType;
166    CARD8	dgaReqType;
167    CARD16	length;
168    CARD32	screen;
169    CARD32	cmap;
170} xXDGAInstallColormapReq;
171#define sz_xXDGAInstallColormapReq	12
172
173typedef struct _XDGASelectInput {
174    CARD8	reqType;
175    CARD8	dgaReqType;
176    CARD16	length;
177    CARD32	screen;
178    CARD32	mask;
179} xXDGASelectInputReq;
180#define sz_xXDGASelectInputReq	12
181
182typedef struct _XDGAFillRectangle {
183    CARD8	reqType;
184    CARD8	dgaReqType;
185    CARD16	length;
186    CARD32	screen;
187    CARD16	x;
188    CARD16	y;
189    CARD16	width;
190    CARD16	height;
191    CARD32	color;
192} xXDGAFillRectangleReq;
193#define sz_xXDGAFillRectangleReq	20
194
195
196typedef struct _XDGACopyArea {
197    CARD8	reqType;
198    CARD8	dgaReqType;
199    CARD16	length;
200    CARD32	screen;
201    CARD16	srcx;
202    CARD16	srcy;
203    CARD16	width;
204    CARD16	height;
205    CARD16	dstx;
206    CARD16	dsty;
207} xXDGACopyAreaReq;
208#define sz_xXDGACopyAreaReq	20
209
210typedef struct _XDGACopyTransparentArea {
211    CARD8	reqType;
212    CARD8	dgaReqType;
213    CARD16	length;
214    CARD32	screen;
215    CARD16	srcx;
216    CARD16	srcy;
217    CARD16	width;
218    CARD16	height;
219    CARD16	dstx;
220    CARD16	dsty;
221    CARD32	key;
222} xXDGACopyTransparentAreaReq;
223#define sz_xXDGACopyTransparentAreaReq	24
224
225
226typedef struct _XDGAGetViewportStatus {
227    CARD8	reqType;
228    CARD8	dgaReqType;
229    CARD16	length;
230    CARD32	screen;
231} xXDGAGetViewportStatusReq;
232#define sz_xXDGAGetViewportStatusReq	8
233
234typedef struct {
235    BYTE	type;
236    BOOL	pad1;
237    CARD16	sequenceNumber;
238    CARD32	length;
239    CARD32	status;
240    CARD32	pad2;
241    CARD32	pad3;
242    CARD32	pad4;
243    CARD32	pad5;
244    CARD32	pad6;
245} xXDGAGetViewportStatusReply;
246#define sz_xXDGAGetViewportStatusReply	32
247
248typedef struct _XDGASync {
249    CARD8	reqType;
250    CARD8	dgaReqType;
251    CARD16	length;
252    CARD32	screen;
253} xXDGASyncReq;
254#define sz_xXDGASyncReq	8
255
256typedef struct {
257    BYTE	type;
258    BOOL	pad1;
259    CARD16	sequenceNumber;
260    CARD32	length;
261    CARD32	pad2;
262    CARD32	pad3;
263    CARD32	pad4;
264    CARD32	pad5;
265    CARD32	pad6;
266    CARD32	pad7;
267} xXDGASyncReply;
268#define sz_xXDGASyncReply	32
269
270typedef struct _XDGASetClientVersion {
271    CARD8	reqType;
272    CARD8	dgaReqType;
273    CARD16	length;
274    CARD16	major;
275    CARD16	minor;
276} xXDGASetClientVersionReq;
277#define sz_xXDGASetClientVersionReq	8
278
279
280typedef struct {
281    CARD8	reqType;
282    CARD8	dgaReqType;
283    CARD16	length;
284    CARD32	screen;
285    CARD16	x;
286    CARD16	y;
287    CARD32	flags;
288} xXDGAChangePixmapModeReq;
289#define sz_xXDGAChangePixmapModeReq	16
290
291typedef struct {
292    BYTE	type;
293    BOOL	pad1;
294    CARD16	sequenceNumber;
295    CARD32	length;
296    CARD16	x;
297    CARD16	y;
298    CARD32	pad3;
299    CARD32	pad4;
300    CARD32	pad5;
301    CARD32	pad6;
302    CARD32	pad7;
303} xXDGAChangePixmapModeReply;
304#define sz_xXDGAChangePixmapModeReply	32
305
306typedef struct _XDGACreateColormap {
307    CARD8	reqType;
308    CARD8	dgaReqType;
309    CARD16	length;
310    CARD32	screen;
311    CARD32	id;
312    CARD32	mode;
313    CARD8	alloc;
314    CARD8	pad1;
315    CARD16	pad2;
316} xXDGACreateColormapReq;
317#define sz_xXDGACreateColormapReq	20
318
319
320typedef struct {
321  union {
322    struct {
323      BYTE type;
324      BYTE detail;
325      CARD16 sequenceNumber;
326    } u;
327    struct {
328      CARD32 pad0;
329      CARD32 time;
330      INT16 dx;
331      INT16 dy;
332      INT16 screen;
333      CARD16 state;
334      CARD32 pad1;
335      CARD32 pad2;
336      CARD32 pad3;
337      CARD32 pad4;
338    } event;
339  } u;
340} dgaEvent;
341
342
343#endif /* _XF86DGAPROTO_H_ */
344
345