1706f2543Smrg/**************************************************************************
2706f2543Smrg
3706f2543SmrgCopyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
4706f2543SmrgCopyright 2000 VA Linux Systems, Inc.
5706f2543SmrgCopyright (c) 2002, 2008, 2009 Apple Computer, Inc.
6706f2543SmrgAll Rights Reserved.
7706f2543Smrg
8706f2543SmrgPermission is hereby granted, free of charge, to any person obtaining a
9706f2543Smrgcopy of this software and associated documentation files (the
10706f2543Smrg"Software"), to deal in the Software without restriction, including
11706f2543Smrgwithout limitation the rights to use, copy, modify, merge, publish,
12706f2543Smrgdistribute, sub license, and/or sell copies of the Software, and to
13706f2543Smrgpermit persons to whom the Software is furnished to do so, subject to
14706f2543Smrgthe following conditions:
15706f2543Smrg
16706f2543SmrgThe above copyright notice and this permission notice (including the
17706f2543Smrgnext paragraph) shall be included in all copies or substantial portions
18706f2543Smrgof the Software.
19706f2543Smrg
20706f2543SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21706f2543SmrgOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22706f2543SmrgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
23706f2543SmrgIN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
24706f2543SmrgANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25706f2543SmrgTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26706f2543SmrgSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27706f2543Smrg
28706f2543Smrg**************************************************************************/
29706f2543Smrg
30706f2543Smrg/*
31706f2543Smrg * Authors:
32706f2543Smrg *   Kevin E. Martin <martin@valinux.com>
33706f2543Smrg *   Jens Owen <jens@valinux.com>
34706f2543Smrg *   Rickard E. (Rik) Fiath <faith@valinux.com>
35706f2543Smrg *
36706f2543Smrg */
37706f2543Smrg
38706f2543Smrg#ifndef _APPLEDRISTR_H_
39706f2543Smrg#define _APPLEDRISTR_H_
40706f2543Smrg
41706f2543Smrg#include "appledri.h"
42706f2543Smrg
43706f2543Smrg#define APPLEDRINAME "Apple-DRI"
44706f2543Smrg
45706f2543Smrg#define APPLE_DRI_MAJOR_VERSION	1	/* current version numbers */
46706f2543Smrg#define APPLE_DRI_MINOR_VERSION	0
47706f2543Smrg#define APPLE_DRI_PATCH_VERSION	0
48706f2543Smrg
49706f2543Smrgtypedef struct _AppleDRIQueryVersion {
50706f2543Smrg    CARD8	reqType;		/* always DRIReqCode */
51706f2543Smrg    CARD8	driReqType;		/* always X_DRIQueryVersion */
52706f2543Smrg    CARD16	length B16;
53706f2543Smrg} xAppleDRIQueryVersionReq;
54706f2543Smrg#define sz_xAppleDRIQueryVersionReq	4
55706f2543Smrg
56706f2543Smrgtypedef struct {
57706f2543Smrg    BYTE	type;			/* X_Reply */
58706f2543Smrg    BOOL	pad1;
59706f2543Smrg    CARD16	sequenceNumber B16;
60706f2543Smrg    CARD32	length B32;
61706f2543Smrg    CARD16	majorVersion B16;	/* major version of DRI protocol */
62706f2543Smrg    CARD16	minorVersion B16;	/* minor version of DRI protocol */
63706f2543Smrg    CARD32	patchVersion B32;       /* patch version of DRI protocol */
64706f2543Smrg    CARD32	pad3 B32;
65706f2543Smrg    CARD32	pad4 B32;
66706f2543Smrg    CARD32	pad5 B32;
67706f2543Smrg    CARD32	pad6 B32;
68706f2543Smrg} xAppleDRIQueryVersionReply;
69706f2543Smrg#define sz_xAppleDRIQueryVersionReply	32
70706f2543Smrg
71706f2543Smrgtypedef struct _AppleDRIQueryDirectRenderingCapable {
72706f2543Smrg    CARD8	reqType;		/* always DRIReqCode */
73706f2543Smrg    CARD8	driReqType;		/* X_DRIQueryDirectRenderingCapable */
74706f2543Smrg    CARD16	length B16;
75706f2543Smrg    CARD32	screen B32;
76706f2543Smrg} xAppleDRIQueryDirectRenderingCapableReq;
77706f2543Smrg#define sz_xAppleDRIQueryDirectRenderingCapableReq	8
78706f2543Smrg
79706f2543Smrgtypedef struct {
80706f2543Smrg    BYTE	type;			/* X_Reply */
81706f2543Smrg    BOOL	pad1;
82706f2543Smrg    CARD16	sequenceNumber B16;
83706f2543Smrg    CARD32	length B32;
84706f2543Smrg    BOOL	isCapable;
85706f2543Smrg    BOOL	pad2;
86706f2543Smrg    BOOL	pad3;
87706f2543Smrg    BOOL	pad4;
88706f2543Smrg    CARD32	pad5 B32;
89706f2543Smrg    CARD32	pad6 B32;
90706f2543Smrg    CARD32	pad7 B32;
91706f2543Smrg    CARD32	pad8 B32;
92706f2543Smrg    CARD32	pad9 B32;
93706f2543Smrg} xAppleDRIQueryDirectRenderingCapableReply;
94706f2543Smrg#define sz_xAppleDRIQueryDirectRenderingCapableReply	32
95706f2543Smrg
96706f2543Smrgtypedef struct _AppleDRIAuthConnection {
97706f2543Smrg    CARD8	reqType;		/* always DRIReqCode */
98706f2543Smrg    CARD8	driReqType;		/* always X_DRICloseConnection */
99706f2543Smrg    CARD16	length B16;
100706f2543Smrg    CARD32	screen B32;
101706f2543Smrg    CARD32      magic B32;
102706f2543Smrg} xAppleDRIAuthConnectionReq;
103706f2543Smrg#define sz_xAppleDRIAuthConnectionReq	12
104706f2543Smrg
105706f2543Smrgtypedef struct {
106706f2543Smrg    BYTE        type;
107706f2543Smrg    BOOL        pad1;
108706f2543Smrg    CARD16      sequenceNumber B16;
109706f2543Smrg    CARD32      length B32;
110706f2543Smrg    CARD32      authenticated B32;
111706f2543Smrg    CARD32      pad2 B32;
112706f2543Smrg    CARD32      pad3 B32;
113706f2543Smrg    CARD32      pad4 B32;
114706f2543Smrg    CARD32      pad5 B32;
115706f2543Smrg    CARD32      pad6 B32;
116706f2543Smrg} xAppleDRIAuthConnectionReply;
117706f2543Smrg#define zx_xAppleDRIAuthConnectionReply  32
118706f2543Smrg
119706f2543Smrgtypedef struct _AppleDRICreateSurface {
120706f2543Smrg    CARD8	reqType;		/* always DRIReqCode */
121706f2543Smrg    CARD8	driReqType;		/* always X_DRICreateSurface */
122706f2543Smrg    CARD16	length B16;
123706f2543Smrg    CARD32	screen B32;
124706f2543Smrg    CARD32	drawable B32;
125706f2543Smrg    CARD32	client_id B32;
126706f2543Smrg} xAppleDRICreateSurfaceReq;
127706f2543Smrg#define sz_xAppleDRICreateSurfaceReq	16
128706f2543Smrg
129706f2543Smrgtypedef struct {
130706f2543Smrg    BYTE	type;			/* X_Reply */
131706f2543Smrg    BOOL	pad1;
132706f2543Smrg    CARD16	sequenceNumber B16;
133706f2543Smrg    CARD32	length B32;
134706f2543Smrg    CARD32	key_0 B32;
135706f2543Smrg    CARD32	key_1 B32;
136706f2543Smrg    CARD32	uid B32;
137706f2543Smrg    CARD32	pad4 B32;
138706f2543Smrg    CARD32	pad5 B32;
139706f2543Smrg    CARD32	pad6 B32;
140706f2543Smrg} xAppleDRICreateSurfaceReply;
141706f2543Smrg#define sz_xAppleDRICreateSurfaceReply	32
142706f2543Smrg
143706f2543Smrgtypedef struct _AppleDRIDestroySurface {
144706f2543Smrg    CARD8	reqType;		/* always DRIReqCode */
145706f2543Smrg    CARD8	driReqType;		/* always X_DRIDestroySurface */
146706f2543Smrg    CARD16	length B16;
147706f2543Smrg    CARD32	screen B32;
148706f2543Smrg    CARD32	drawable B32;
149706f2543Smrg} xAppleDRIDestroySurfaceReq;
150706f2543Smrg#define sz_xAppleDRIDestroySurfaceReq	12
151706f2543Smrg
152706f2543Smrgtypedef struct _AppleDRINotify {
153706f2543Smrg	BYTE	type;		/* always eventBase + event type */
154706f2543Smrg	BYTE	kind;
155706f2543Smrg	CARD16	sequenceNumber B16;
156706f2543Smrg	CARD32	time B32;	/* time of change */
157706f2543Smrg	CARD32	pad1 B32;
158706f2543Smrg	CARD32	arg B32;
159706f2543Smrg	CARD32	pad3 B32;
160706f2543Smrg	CARD32	pad4 B32;
161706f2543Smrg	CARD32	pad5 B32;
162706f2543Smrg	CARD32	pad6 B32;
163706f2543Smrg} xAppleDRINotifyEvent;
164706f2543Smrg#define sz_xAppleDRINotifyEvent	32
165706f2543Smrg
166706f2543Smrg
167706f2543Smrgtypedef struct {
168706f2543Smrg    CARD8 reqType;
169706f2543Smrg    CARD8 driReqType;
170706f2543Smrg    CARD16 length B16;
171706f2543Smrg    CARD32 screen B32;
172706f2543Smrg    CARD32 drawable B32;
173706f2543Smrg    BOOL doubleSwap;
174706f2543Smrg    CARD8 pad1, pad2, pad3;
175706f2543Smrg} xAppleDRICreateSharedBufferReq;
176706f2543Smrg
177706f2543Smrg#define sz_xAppleDRICreateSharedBufferReq 16
178706f2543Smrg
179706f2543Smrgtypedef struct {
180706f2543Smrg    BYTE type;
181706f2543Smrg    BYTE data1;
182706f2543Smrg    CARD16 sequenceNumber B16;
183706f2543Smrg    CARD32 length B32;
184706f2543Smrg    CARD32 stringLength B32; /* 0 on error */
185706f2543Smrg    CARD32 width B32;
186706f2543Smrg    CARD32 height B32;
187706f2543Smrg    CARD32 pad1 B32;
188706f2543Smrg    CARD32 pad2 B32;
189706f2543Smrg    CARD32 pad3 B32;
190706f2543Smrg} xAppleDRICreateSharedBufferReply;
191706f2543Smrg
192706f2543Smrg#define sz_xAppleDRICreateSharedBufferReply 32
193706f2543Smrg
194706f2543Smrgtypedef struct {
195706f2543Smrg    CARD8 reqType;
196706f2543Smrg    CARD8 driReqType;
197706f2543Smrg    CARD16 length B16;
198706f2543Smrg    CARD32 screen B32;
199706f2543Smrg    CARD32 drawable B32;
200706f2543Smrg} xAppleDRISwapBuffersReq;
201706f2543Smrg
202706f2543Smrg#define sz_xAppleDRISwapBuffersReq 12
203706f2543Smrg
204706f2543Smrgtypedef struct {
205706f2543Smrg    CARD8 reqType; /*1*/
206706f2543Smrg    CARD8 driReqType; /*2*/
207706f2543Smrg    CARD16 length B16; /*4*/
208706f2543Smrg    CARD32 screen B32; /*8*/
209706f2543Smrg    CARD32 drawable B32; /*12*/
210706f2543Smrg} xAppleDRICreatePixmapReq;
211706f2543Smrg
212706f2543Smrg#define sz_xAppleDRICreatePixmapReq 12
213706f2543Smrg
214706f2543Smrgtypedef struct {
215706f2543Smrg    BYTE type; /*1*/
216706f2543Smrg    BOOL pad1; /*2*/
217706f2543Smrg    CARD16 sequenceNumber B16; /*4*/
218706f2543Smrg    CARD32 length B32; /*8*/
219706f2543Smrg    CARD32 width B32; /*12*/
220706f2543Smrg    CARD32 height B32; /*16*/
221706f2543Smrg    CARD32 pitch B32; /*20*/
222706f2543Smrg    CARD32 bpp B32; /*24*/
223706f2543Smrg    CARD32 size B32; /*28*/
224706f2543Smrg    CARD32 stringLength B32; /*32*/
225706f2543Smrg} xAppleDRICreatePixmapReply;
226706f2543Smrg
227706f2543Smrg#define sz_xAppleDRICreatePixmapReply 32
228706f2543Smrg
229706f2543Smrgtypedef struct {
230706f2543Smrg    CARD8 reqType; /*1*/
231706f2543Smrg    CARD8 driReqType; /*2*/
232706f2543Smrg    CARD16 length B16; /*4*/
233706f2543Smrg    CARD32 drawable B32; /*8*/
234706f2543Smrg} xAppleDRIDestroyPixmapReq;
235706f2543Smrg
236706f2543Smrg#define sz_xAppleDRIDestroyPixmapReq 8
237706f2543Smrg
238706f2543Smrg#ifdef _APPLEDRI_SERVER_
239706f2543Smrg
240706f2543Smrgvoid AppleDRISendEvent (
241706f2543Smrg#if NeedFunctionPrototypes
242706f2543Smrg    int			/* type */,
243706f2543Smrg    unsigned int	/* mask */,
244706f2543Smrg    int			/* which */,
245706f2543Smrg    int			/* arg */
246706f2543Smrg#endif
247706f2543Smrg);
248706f2543Smrg
249706f2543Smrg#endif /* _APPLEDRI_SERVER_ */
250706f2543Smrg#endif /* _APPLEDRISTR_H_ */
251