1/* $Xorg: Xdbeproto.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
2/******************************************************************************
3 *
4 * Copyright (c) 1994, 1995  Hewlett-Packard Company
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining
7 * a copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sublicense, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included
15 * in all copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 * IN NO EVENT SHALL HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY CLAIM,
21 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
23 * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 *
25 * Except as contained in this notice, the name of the Hewlett-Packard
26 * Company shall not be used in advertising or otherwise to promote the
27 * sale, use or other dealings in this Software without prior written
28 * authorization from the Hewlett-Packard Company.
29 *
30 *     Header file for Xlib-related DBE
31 *
32 *****************************************************************************/
33
34
35#ifndef XDBE_PROTO_H
36#define XDBE_PROTO_H
37
38/* INCLUDES */
39
40
41/* DEFINES */
42
43/* Values for swap_action field of XdbeSwapInfo structure */
44#define XdbeUndefined    0
45#define XdbeBackground   1
46#define XdbeUntouched    2
47#define XdbeCopied       3
48
49#ifdef NEED_DBE_PROTOCOL
50
51#define DBE_PROTOCOL_NAME "DOUBLE-BUFFER"
52
53/* Current version numbers */
54#define DBE_MAJOR_VERSION       1
55#define DBE_MINOR_VERSION       0
56
57/* Used when adding extension; also used in Xdbe macros */
58#define DbeNumberEvents			0
59#define DbeBadBuffer			0
60#define DbeNumberErrors			(DbeBadBuffer + 1)
61
62/* Request values used in (S)ProcDbeDispatch() */
63#define X_DbeGetVersion                 0
64#define X_DbeAllocateBackBufferName     1
65#define X_DbeDeallocateBackBufferName   2
66#define X_DbeSwapBuffers                3
67#define X_DbeBeginIdiom                 4
68#define X_DbeEndIdiom                   5
69#define X_DbeGetVisualInfo              6
70#define X_DbeGetBackBufferAttributes    7
71
72typedef CARD8  xDbeSwapAction;
73typedef CARD32 xDbeBackBuffer;
74
75#endif /* NEED_DBE_PROTOCOL */
76
77
78/* TYPEDEFS */
79
80/* Client data types */
81
82/* XdbeVisualInfo and XdbeScreenVisualInfo are defined in this file,
83 * "Xdbeproto.h", rather than "Xdbe.h" because the server uses these data
84 * types.
85 */
86
87typedef struct
88{
89    VisualID    visual;    /* one visual ID that supports double-buffering */
90    int         depth;     /* depth of visual in bits                      */
91    int         perflevel; /* performance level of visual                  */
92}
93XdbeVisualInfo;
94
95typedef struct
96{
97    int                 count;          /* number of items in visual_depth   */
98    XdbeVisualInfo      *visinfo;       /* list of visuals & depths for scrn */
99}
100XdbeScreenVisualInfo;
101
102/* Protocol data types */
103
104#ifdef NEED_DBE_PROTOCOL
105
106typedef struct
107{
108    CARD32		window B32;	/* window      */
109    xDbeSwapAction	swapAction;	/* swap action */
110    CARD8		pad1;		/* unused      */
111    CARD16		pad2 B16;
112
113} xDbeSwapInfo;
114
115typedef struct
116{
117    CARD32	visualID B32;	/* associated visual      */
118    CARD8	depth;		/* depth of visual        */
119    CARD8	perfLevel;	/* performance level hint */
120    CARD16	pad1 B16;
121
122} xDbeVisInfo;
123#define sz_xDbeVisInfo	8
124
125typedef struct
126{
127    CARD32	n B32;	/* number of visual info items in list  */
128
129} xDbeScreenVisInfo;	/* followed by n xDbeVisInfo items */
130
131typedef struct
132{
133    CARD32	window B32;	/* window */
134
135} xDbeBufferAttributes;
136
137
138/* Requests and replies */
139
140typedef struct
141{
142    CARD8	reqType;	/* major-opcode: always codes->major_opcode */
143    CARD8	dbeReqType;	/* minor-opcode: always X_DbeGetVersion (0) */
144    CARD16	length B16;	/* request length: (2)                      */
145    CARD8	majorVersion;	/* client-major-version                     */
146    CARD8	minorVersion;	/* client-minor-version                     */
147    CARD16	unused B16;	/* unused                                   */
148
149} xDbeGetVersionReq;
150#define sz_xDbeGetVersionReq	8
151
152typedef struct
153{
154    BYTE	type;			/* Reply: X_Reply (1)   */
155    CARD8	unused;			/* unused               */
156    CARD16	sequenceNumber B16;	/* sequence number      */
157    CARD32	length B32;		/* reply length: (0)    */
158    CARD8	majorVersion;		/* server-major-version */
159    CARD8	minorVersion;		/* server-minor-version */
160    CARD16	pad1 B16;		/* unused               */
161    CARD32	pad2 B32;
162    CARD32	pad3 B32;
163    CARD32	pad4 B32;
164    CARD32	pad5 B32;
165    CARD32	pad6 B32;
166
167} xDbeGetVersionReply;
168#define sz_xDbeGetVersionReply	32
169
170typedef struct
171{
172    CARD8		reqType;	/* major-opcode: codes->major_opcode */
173    CARD8		dbeReqType;	/* X_DbeAllocateBackBufferName (1)   */
174    CARD16		length B16;	/* request length: (4)               */
175    CARD32		window B32;	/* window                            */
176    xDbeBackBuffer	buffer B32;	/* back buffer name                  */
177    xDbeSwapAction	swapAction;	/* swap action hint                  */
178    CARD8		pad1;		/* unused                            */
179    CARD16		pad2 B16;
180
181} xDbeAllocateBackBufferNameReq;
182#define sz_xDbeAllocateBackBufferNameReq	16
183
184typedef struct
185{
186    CARD8		reqType;	/* major-opcode: codes->major_opcode */
187    CARD8		dbeReqType;	/* X_DbeDeallocateBackBufferName (2) */
188    CARD16		length B16;	/* request length: (2)               */
189    xDbeBackBuffer	buffer B32;	/* back buffer name                  */
190
191} xDbeDeallocateBackBufferNameReq;
192#define sz_xDbeDeallocateBackBufferNameReq	8
193
194typedef struct
195{
196    CARD8	reqType;	/* major-opcode: always codes->major_opcode  */
197    CARD8	dbeReqType;	/* minor-opcode: always X_DbeSwapBuffers (3) */
198    CARD16	length B16;	/* request length: (2+2n)                    */
199    CARD32	n B32;		/* n, number of window/swap action pairs     */
200
201} xDbeSwapBuffersReq;		/* followed by n window/swap action pairs    */
202#define sz_xDbeSwapBuffersReq	8
203
204typedef struct
205{
206    CARD8	reqType;	/* major-opcode: always codes->major_opcode */
207    CARD8	dbeReqType;	/* minor-opcode: always X_DbeBeginIdom (4)  */
208    CARD16	length B16;	/* request length: (1)                      */
209
210} xDbeBeginIdiomReq;
211#define sz_xDbeBeginIdiomReq	4
212
213typedef struct
214{
215    CARD8	reqType;	/* major-opcode: always codes->major_opcode */
216    CARD8	dbeReqType;	/* minor-opcode: always X_DbeEndIdom (5)    */
217    CARD16	length B16;	/* request length: (1)                      */
218
219} xDbeEndIdiomReq;
220#define sz_xDbeEndIdiomReq	4
221
222typedef struct
223{
224    CARD8	reqType;	/* always codes->major_opcode     */
225    CARD8	dbeReqType;	/* always X_DbeGetVisualInfo (6)  */
226    CARD16	length B16;	/* request length: (2+n)          */
227    CARD32	n B32;		/* n, number of drawables in list */
228
229} xDbeGetVisualInfoReq;		/* followed by n drawables        */
230#define sz_xDbeGetVisualInfoReq	8
231
232typedef struct
233{
234    BYTE	type;			/* Reply: X_Reply (1)                */
235    CARD8	unused;			/* unused                            */
236    CARD16	sequenceNumber B16;	/* sequence number                   */
237    CARD32	length B32;		/* reply length                      */
238    CARD32	m;			/* m, number of visual infos in list */
239    CARD32	pad1 B32;		/* unused                            */
240    CARD32	pad2 B32;
241    CARD32	pad3 B32;
242    CARD32	pad4 B32;
243    CARD32	pad5 B32;
244
245} xDbeGetVisualInfoReply;		/* followed by m visual infos        */
246#define sz_xDbeGetVisualInfoReply	32
247
248typedef struct
249{
250    CARD8		reqType;	/* always codes->major_opcode       */
251    CARD8		dbeReqType;	/* X_DbeGetBackBufferAttributes (7) */
252    CARD16		length B16;	/* request length: (2)              */
253    xDbeBackBuffer	buffer B32;	/* back buffer name                 */
254
255} xDbeGetBackBufferAttributesReq;
256#define sz_xDbeGetBackBufferAttributesReq	8
257
258typedef struct
259{
260    BYTE	type;			/* Reply: X_Reply (1) */
261    CARD8	unused;			/* unused             */
262    CARD16	sequenceNumber B16;	/* sequence number    */
263    CARD32	length B32;		/* reply length: (0)  */
264    CARD32	attributes;		/* attributes         */
265    CARD32	pad1 B32;		/* unused             */
266    CARD32	pad2 B32;
267    CARD32	pad3 B32;
268    CARD32	pad4 B32;
269    CARD32	pad5 B32;
270
271} xDbeGetBackBufferAttributesReply;
272#define sz_xDbeGetBackBufferAttributesReply	32
273
274#endif /* NEED_DBE_PROTOCOL */
275
276#endif /* XDBE_PROTO_H */
277
278