1/*
2
3Copyright 1995  Kaleb S. KEITHLEY
4
5Permission is hereby granted, free of charge, to any person obtaining
6a copy of this software and associated documentation files (the
7"Software"), to deal in the Software without restriction, including
8without limitation the rights to use, copy, modify, merge, publish,
9distribute, sublicense, and/or sell copies of the Software, and to
10permit persons to whom the Software is furnished to do so, subject to
11the following conditions:
12
13The above copyright notice and this permission notice shall be
14included in all copies or substantial portions of the Software.
15
16THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19IN NO EVENT SHALL Kaleb S. KEITHLEY BE LIABLE FOR ANY CLAIM, DAMAGES
20OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22OTHER DEALINGS IN THE SOFTWARE.
23
24Except as contained in this notice, the name of Kaleb S. KEITHLEY
25shall not be used in advertising or otherwise to promote the sale, use
26or other dealings in this Software without prior written authorization
27from Kaleb S. KEITHLEY
28
29*/
30
31/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
32
33#ifndef _XF86VIDMODEPROTO_H_
34#define _XF86VIDMODEPROTO_H_
35
36#include <X11/extensions/xf86vm.h>
37
38#define XF86VIDMODENAME "XFree86-VidModeExtension"
39
40#define XF86VIDMODE_MAJOR_VERSION	2	/* current version numbers */
41#define XF86VIDMODE_MINOR_VERSION	2
42
43#define X_XF86VidModeQueryVersion	0
44#define X_XF86VidModeGetModeLine	1
45#define X_XF86VidModeModModeLine	2
46#define X_XF86VidModeSwitchMode		3
47#define X_XF86VidModeGetMonitor		4
48#define X_XF86VidModeLockModeSwitch	5
49#define X_XF86VidModeGetAllModeLines	6
50#define X_XF86VidModeAddModeLine	7
51#define X_XF86VidModeDeleteModeLine	8
52#define X_XF86VidModeValidateModeLine	9
53#define X_XF86VidModeSwitchToMode	10
54#define X_XF86VidModeGetViewPort	11
55#define X_XF86VidModeSetViewPort	12
56/* new for version 2.x of this extension */
57#define X_XF86VidModeGetDotClocks	13
58#define X_XF86VidModeSetClientVersion	14
59#define X_XF86VidModeSetGamma		15
60#define X_XF86VidModeGetGamma		16
61#define X_XF86VidModeGetGammaRamp	17
62#define X_XF86VidModeSetGammaRamp	18
63#define X_XF86VidModeGetGammaRampSize	19
64#define X_XF86VidModeGetPermissions	20
65/*
66 * major version 0 == uses parameter-to-wire functions in XFree86 libXxf86vm.
67 * major version 1 == uses parameter-to-wire functions hard-coded in xvidtune
68 *                    client.
69 * major version 2 == uses new protocol version in XFree86 4.0.
70 */
71
72typedef struct _XF86VidModeQueryVersion {
73    CARD8	reqType;		/* always XF86VidModeReqCode */
74    CARD8	xf86vidmodeReqType;	/* always X_XF86VidModeQueryVersion */
75    CARD16	length;
76} xXF86VidModeQueryVersionReq;
77#define sz_xXF86VidModeQueryVersionReq	4
78
79typedef struct {
80    BYTE	type;			/* X_Reply */
81    BOOL	pad1;
82    CARD16	sequenceNumber;
83    CARD32	length;
84    CARD16	majorVersion;		/* major version of XF86VidMode */
85    CARD16	minorVersion;		/* minor version of XF86VidMode */
86    CARD32	pad2;
87    CARD32	pad3;
88    CARD32	pad4;
89    CARD32	pad5;
90    CARD32	pad6;
91} xXF86VidModeQueryVersionReply;
92#define sz_xXF86VidModeQueryVersionReply	32
93
94typedef struct _XF86VidModeGetModeLine {
95    CARD8	reqType;		/* always XF86VidModeReqCode */
96    CARD8	xf86vidmodeReqType;
97    CARD16	length;
98    CARD16	screen;
99    CARD16	pad;
100} xXF86VidModeGetModeLineReq,
101  xXF86VidModeGetAllModeLinesReq,
102  xXF86VidModeGetMonitorReq,
103  xXF86VidModeGetViewPortReq,
104  xXF86VidModeGetDotClocksReq,
105  xXF86VidModeGetPermissionsReq;
106#define sz_xXF86VidModeGetModeLineReq		8
107#define sz_xXF86VidModeGetAllModeLinesReq	8
108#define sz_xXF86VidModeGetMonitorReq		8
109#define sz_xXF86VidModeGetViewPortReq		8
110#define sz_xXF86VidModeGetDotClocksReq		8
111#define sz_xXF86VidModeGetPermissionsReq	8
112
113typedef struct {
114    BYTE	type;			/* X_Reply */
115    BOOL	pad1;
116    CARD16	sequenceNumber;
117    CARD32	length;
118    CARD32	dotclock;
119    CARD16	hdisplay;
120    CARD16	hsyncstart;
121    CARD16	hsyncend;
122    CARD16	htotal;
123    CARD16	hskew;
124    CARD16	vdisplay;
125    CARD16	vsyncstart;
126    CARD16	vsyncend;
127    CARD16	vtotal;
128    CARD16	pad2;
129    CARD32	flags;
130    CARD32	reserved1;
131    CARD32	reserved2;
132    CARD32	reserved3;
133    CARD32	privsize;
134} xXF86VidModeGetModeLineReply;
135#define sz_xXF86VidModeGetModeLineReply	52
136
137/* 0.x version */
138typedef struct {
139    BYTE	type;			/* X_Reply */
140    BOOL	pad1;
141    CARD16	sequenceNumber;
142    CARD32	length;
143    CARD32	dotclock;
144    CARD16	hdisplay;
145    CARD16	hsyncstart;
146    CARD16	hsyncend;
147    CARD16	htotal;
148    CARD16	vdisplay;
149    CARD16	vsyncstart;
150    CARD16	vsyncend;
151    CARD16	vtotal;
152    CARD32	flags;
153    CARD32	privsize;
154} xXF86OldVidModeGetModeLineReply;
155#define sz_xXF86OldVidModeGetModeLineReply	36
156
157typedef struct {
158    CARD32	dotclock;
159    CARD16	hdisplay;
160    CARD16	hsyncstart;
161    CARD16	hsyncend;
162    CARD16	htotal;
163    CARD32	hskew;
164    CARD16	vdisplay;
165    CARD16	vsyncstart;
166    CARD16	vsyncend;
167    CARD16	vtotal;
168    CARD16	pad1;
169    CARD32	flags;
170    CARD32	reserved1;
171    CARD32	reserved2;
172    CARD32	reserved3;
173    CARD32	privsize;
174} xXF86VidModeModeInfo;
175
176/* 0.x version */
177typedef struct {
178    CARD32	dotclock;
179    CARD16	hdisplay;
180    CARD16	hsyncstart;
181    CARD16	hsyncend;
182    CARD16	htotal;
183    CARD16	vdisplay;
184    CARD16	vsyncstart;
185    CARD16	vsyncend;
186    CARD16	vtotal;
187    CARD32	flags;
188    CARD32	privsize;
189} xXF86OldVidModeModeInfo;
190
191typedef struct {
192    BYTE	type;			/* X_Reply */
193    BOOL	pad1;
194    CARD16	sequenceNumber;
195    CARD32	length;
196    CARD32	modecount;
197    CARD32	pad2;
198    CARD32	pad3;
199    CARD32	pad4;
200    CARD32	pad5;
201    CARD32	pad6;
202} xXF86VidModeGetAllModeLinesReply;
203#define sz_xXF86VidModeGetAllModeLinesReply	32
204
205typedef struct _XF86VidModeAddModeLine {
206    CARD8	reqType;		/* always XF86VidModeReqCode */
207    CARD8	xf86vidmodeReqType;	/* always X_XF86VidModeAddMode */
208    CARD16	length;
209    CARD32	screen;			/* could be CARD16 but need the pad */
210    CARD32	dotclock;
211    CARD16	hdisplay;
212    CARD16	hsyncstart;
213    CARD16	hsyncend;
214    CARD16	htotal;
215    CARD16	hskew;
216    CARD16	vdisplay;
217    CARD16	vsyncstart;
218    CARD16	vsyncend;
219    CARD16	vtotal;
220    CARD16	pad1;
221    CARD32	flags;
222    CARD32	reserved1;
223    CARD32	reserved2;
224    CARD32	reserved3;
225    CARD32	privsize;
226    CARD32	after_dotclock;
227    CARD16	after_hdisplay;
228    CARD16	after_hsyncstart;
229    CARD16	after_hsyncend;
230    CARD16	after_htotal;
231    CARD16	after_hskew;
232    CARD16	after_vdisplay;
233    CARD16	after_vsyncstart;
234    CARD16	after_vsyncend;
235    CARD16	after_vtotal;
236    CARD16	pad2;
237    CARD32	after_flags;
238    CARD32	reserved4;
239    CARD32	reserved5;
240    CARD32	reserved6;
241} xXF86VidModeAddModeLineReq;
242#define sz_xXF86VidModeAddModeLineReq	92
243
244/* 0.x version */
245typedef struct _XF86OldVidModeAddModeLine {
246    CARD8	reqType;		/* always XF86VidModeReqCode */
247    CARD8	xf86vidmodeReqType;	/* always X_XF86VidModeAddMode */
248    CARD16	length;
249    CARD32	screen;			/* could be CARD16 but need the pad */
250    CARD32	dotclock;
251    CARD16	hdisplay;
252    CARD16	hsyncstart;
253    CARD16	hsyncend;
254    CARD16	htotal;
255    CARD16	vdisplay;
256    CARD16	vsyncstart;
257    CARD16	vsyncend;
258    CARD16	vtotal;
259    CARD32	flags;
260    CARD32	privsize;
261    CARD32	after_dotclock;
262    CARD16	after_hdisplay;
263    CARD16	after_hsyncstart;
264    CARD16	after_hsyncend;
265    CARD16	after_htotal;
266    CARD16	after_vdisplay;
267    CARD16	after_vsyncstart;
268    CARD16	after_vsyncend;
269    CARD16	after_vtotal;
270    CARD32	after_flags;
271} xXF86OldVidModeAddModeLineReq;
272#define sz_xXF86OldVidModeAddModeLineReq	60
273
274typedef struct _XF86VidModeModModeLine {
275    CARD8	reqType;		/* always XF86VidModeReqCode */
276    CARD8	xf86vidmodeReqType;	/* always X_XF86VidModeModModeLine */
277    CARD16	length;
278    CARD32	screen;			/* could be CARD16 but need the pad */
279    CARD16	hdisplay;
280    CARD16	hsyncstart;
281    CARD16	hsyncend;
282    CARD16	htotal;
283    CARD16	hskew;
284    CARD16	vdisplay;
285    CARD16	vsyncstart;
286    CARD16	vsyncend;
287    CARD16	vtotal;
288    CARD16	pad1;
289    CARD32	flags;
290    CARD32	reserved1;
291    CARD32	reserved2;
292    CARD32	reserved3;
293    CARD32	privsize;
294} xXF86VidModeModModeLineReq;
295#define sz_xXF86VidModeModModeLineReq	48
296
297/* 0.x version */
298typedef struct _XF86OldVidModeModModeLine {
299    CARD8	reqType;		/* always XF86OldVidModeReqCode */
300    CARD8	xf86vidmodeReqType;	/* always X_XF86OldVidModeModModeLine */
301    CARD16	length;
302    CARD32	screen;			/* could be CARD16 but need the pad */
303    CARD16	hdisplay;
304    CARD16	hsyncstart;
305    CARD16	hsyncend;
306    CARD16	htotal;
307    CARD16	vdisplay;
308    CARD16	vsyncstart;
309    CARD16	vsyncend;
310    CARD16	vtotal;
311    CARD32	flags;
312    CARD32	privsize;
313} xXF86OldVidModeModModeLineReq;
314#define sz_xXF86OldVidModeModModeLineReq	32
315
316typedef struct _XF86VidModeValidateModeLine {
317    CARD8	reqType;		/* always XF86VidModeReqCode */
318    CARD8	xf86vidmodeReqType;
319    CARD16	length;
320    CARD32	screen;			/* could be CARD16 but need the pad */
321    CARD32	dotclock;
322    CARD16	hdisplay;
323    CARD16	hsyncstart;
324    CARD16	hsyncend;
325    CARD16	htotal;
326    CARD16	hskew;
327    CARD16	vdisplay;
328    CARD16	vsyncstart;
329    CARD16	vsyncend;
330    CARD16	vtotal;
331    CARD16	pad1;
332    CARD32	flags;
333    CARD32	reserved1;
334    CARD32	reserved2;
335    CARD32	reserved3;
336    CARD32	privsize;
337} xXF86VidModeDeleteModeLineReq,
338  xXF86VidModeValidateModeLineReq,
339  xXF86VidModeSwitchToModeReq;
340#define sz_xXF86VidModeDeleteModeLineReq	52
341#define sz_xXF86VidModeValidateModeLineReq	52
342#define sz_xXF86VidModeSwitchToModeReq		52
343
344/* 0.x version */
345typedef struct _XF86OldVidModeValidateModeLine {
346    CARD8	reqType;		/* always XF86OldVidModeReqCode */
347    CARD8	xf86vidmodeReqType;
348    CARD16	length;
349    CARD32	screen;			/* could be CARD16 but need the pad */
350    CARD32	dotclock;
351    CARD16	hdisplay;
352    CARD16	hsyncstart;
353    CARD16	hsyncend;
354    CARD16	htotal;
355    CARD16	vdisplay;
356    CARD16	vsyncstart;
357    CARD16	vsyncend;
358    CARD16	vtotal;
359    CARD32	flags;
360    CARD32	privsize;
361} xXF86OldVidModeDeleteModeLineReq,
362  xXF86OldVidModeValidateModeLineReq,
363  xXF86OldVidModeSwitchToModeReq;
364#define sz_xXF86OldVidModeDeleteModeLineReq	36
365#define sz_xXF86OldVidModeValidateModeLineReq	36
366#define sz_xXF86OldVidModeSwitchToModeReq	36
367
368typedef struct _XF86VidModeSwitchMode {
369    CARD8	reqType;		/* always XF86VidModeReqCode */
370    CARD8	xf86vidmodeReqType;	/* always X_XF86VidModeSwitchMode */
371    CARD16	length;
372    CARD16	screen;
373    CARD16	zoom;
374} xXF86VidModeSwitchModeReq;
375#define sz_xXF86VidModeSwitchModeReq	8
376
377typedef struct _XF86VidModeLockModeSwitch {
378    CARD8	reqType;		/* always XF86VidModeReqCode */
379    CARD8	xf86vidmodeReqType;	/* always X_XF86VidModeLockModeSwitch */
380    CARD16	length;
381    CARD16	screen;
382    CARD16	lock;
383} xXF86VidModeLockModeSwitchReq;
384#define sz_xXF86VidModeLockModeSwitchReq	8
385
386typedef struct {
387    BYTE	type;			/* X_Reply */
388    BOOL	pad1;
389    CARD16	sequenceNumber;
390    CARD32	length;
391    CARD32	status;
392    CARD32	pad2;
393    CARD32	pad3;
394    CARD32	pad4;
395    CARD32	pad5;
396    CARD32	pad6;
397} xXF86VidModeValidateModeLineReply;
398#define sz_xXF86VidModeValidateModeLineReply	32
399
400typedef struct {
401    BYTE	type;			/* X_Reply */
402    BOOL	pad1;
403    CARD16	sequenceNumber;
404    CARD32	length;
405    CARD8	vendorLength;
406    CARD8	modelLength;
407    CARD8	nhsync;
408    CARD8	nvsync;
409    CARD32	pad2;
410    CARD32	pad3;
411    CARD32	pad4;
412    CARD32	pad5;
413    CARD32	pad6;
414} xXF86VidModeGetMonitorReply;
415#define sz_xXF86VidModeGetMonitorReply	32
416
417typedef struct {
418    BYTE	type;
419    BOOL	pad1;
420    CARD16	sequenceNumber;
421    CARD32	length;
422    CARD32	x;
423    CARD32	y;
424    CARD32	pad2;
425    CARD32	pad3;
426    CARD32	pad4;
427    CARD32	pad5;
428} xXF86VidModeGetViewPortReply;
429#define sz_xXF86VidModeGetViewPortReply	32
430
431typedef struct _XF86VidModeSetViewPort {
432    CARD8	reqType;		/* always VidModeReqCode */
433    CARD8	xf86vidmodeReqType;	/* always X_XF86VidModeSetViewPort */
434    CARD16	length;
435    CARD16	screen;
436    CARD16	pad;
437    CARD32	x;
438    CARD32	y;
439} xXF86VidModeSetViewPortReq;
440#define sz_xXF86VidModeSetViewPortReq	16
441
442typedef struct {
443    BYTE	type;
444    BOOL	pad1;
445    CARD16	sequenceNumber;
446    CARD32	length;
447    CARD32	flags;
448    CARD32	clocks;
449    CARD32	maxclocks;
450    CARD32	pad2;
451    CARD32	pad3;
452    CARD32	pad4;
453} xXF86VidModeGetDotClocksReply;
454#define sz_xXF86VidModeGetDotClocksReply	32
455
456typedef struct _XF86VidModeSetClientVersion {
457    CARD8	reqType;		/* always XF86VidModeReqCode */
458    CARD8	xf86vidmodeReqType;
459    CARD16	length;
460    CARD16	major;
461    CARD16	minor;
462} xXF86VidModeSetClientVersionReq;
463#define sz_xXF86VidModeSetClientVersionReq	8
464
465typedef struct _XF86VidModeGetGamma {
466    CARD8	reqType;		/* always XF86VidModeReqCode */
467    CARD8	xf86vidmodeReqType;
468    CARD16	length;
469    CARD16	screen;
470    CARD16	pad;
471    CARD32	pad1;
472    CARD32	pad2;
473    CARD32	pad3;
474    CARD32	pad4;
475    CARD32	pad5;
476    CARD32	pad6;
477} xXF86VidModeGetGammaReq;
478#define sz_xXF86VidModeGetGammaReq		32
479
480typedef struct {
481    BYTE	type;
482    BOOL	pad;
483    CARD16	sequenceNumber;
484    CARD32	length;
485    CARD32	red;
486    CARD32	green;
487    CARD32	blue;
488    CARD32	pad1;
489    CARD32	pad2;
490    CARD32	pad3;
491} xXF86VidModeGetGammaReply;
492#define sz_xXF86VidModeGetGammaReply		32
493
494typedef struct _XF86VidModeSetGamma {
495    CARD8	reqType;		/* always XF86VidModeReqCode */
496    CARD8	xf86vidmodeReqType;
497    CARD16	length;
498    CARD16	screen;
499    CARD16	pad;
500    CARD32	red;
501    CARD32	green;
502    CARD32	blue;
503    CARD32	pad1;
504    CARD32	pad2;
505    CARD32	pad3;
506} xXF86VidModeSetGammaReq;
507#define sz_xXF86VidModeSetGammaReq		32
508
509
510typedef struct _XF86VidModeSetGammaRamp {
511    CARD8       reqType;                /* always XF86VidModeReqCode */
512    CARD8       xf86vidmodeReqType;
513    CARD16      length;
514    CARD16      screen;
515    CARD16      size;
516} xXF86VidModeSetGammaRampReq;
517#define sz_xXF86VidModeSetGammaRampReq             8
518
519typedef struct _XF86VidModeGetGammaRamp {
520    CARD8       reqType;                /* always XF86VidModeReqCode */
521    CARD8       xf86vidmodeReqType;
522    CARD16      length;
523    CARD16      screen;
524    CARD16      size;
525} xXF86VidModeGetGammaRampReq;
526#define sz_xXF86VidModeGetGammaRampReq             8
527
528typedef struct {
529    BYTE        type;
530    BOOL        pad;
531    CARD16      sequenceNumber;
532    CARD32      length;
533    CARD16      size;
534    CARD16      pad0;
535    CARD32      pad1;
536    CARD32      pad2;
537    CARD32      pad3;
538    CARD32      pad4;
539    CARD32      pad5;
540} xXF86VidModeGetGammaRampReply;
541#define sz_xXF86VidModeGetGammaRampReply            32
542
543typedef struct _XF86VidModeGetGammaRampSize {
544    CARD8       reqType;                /* always XF86VidModeReqCode */
545    CARD8       xf86vidmodeReqType;
546    CARD16      length;
547    CARD16      screen;
548    CARD16      pad;
549} xXF86VidModeGetGammaRampSizeReq;
550#define sz_xXF86VidModeGetGammaRampSizeReq             8
551
552typedef struct {
553    BYTE        type;
554    BOOL        pad;
555    CARD16      sequenceNumber;
556    CARD32      length;
557    CARD16      size;
558    CARD16      pad0;
559    CARD32      pad1;
560    CARD32      pad2;
561    CARD32      pad3;
562    CARD32      pad4;
563    CARD32      pad5;
564} xXF86VidModeGetGammaRampSizeReply;
565#define sz_xXF86VidModeGetGammaRampSizeReply            32
566
567typedef struct {
568    BYTE        type;
569    BOOL        pad;
570    CARD16      sequenceNumber;
571    CARD32      length;
572    CARD32      permissions;
573    CARD32      pad1;
574    CARD32      pad2;
575    CARD32      pad3;
576    CARD32      pad4;
577    CARD32      pad5;
578} xXF86VidModeGetPermissionsReply;
579#define sz_xXF86VidModeGetPermissionsReply            32
580
581
582#endif /* _XF86VIDMODEPROTO_H_ */
583
584