1/*
2 * Copyright © 2000 Compaq Computer Corporation
3 * Copyright © 2002 Hewlett Packard Company
4 * Copyright © 2006 Intel Corporation
5 * Copyright © 2008 Red Hat, Inc.
6 *
7 * Permission to use, copy, modify, distribute, and sell this software and its
8 * documentation for any purpose is hereby granted without fee, provided that
9 * the above copyright notice appear in all copies and that both that copyright
10 * notice and this permission notice appear in supporting documentation, and
11 * that the name of the copyright holders not be used in advertising or
12 * publicity pertaining to distribution of the software without specific,
13 * written prior permission. The copyright holders make no representations
14 * about the suitability of this software for any purpose. It is provided "as
15 * is" without express or implied warranty.
16 *
17 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
18 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
19 * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
20 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
22 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
23 * OF THIS SOFTWARE.
24 *
25 * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
26 * Keith Packard, Intel Corporation
27 */
28
29#ifndef _RANDR_H_
30#define _RANDR_H_
31
32typedef unsigned short Rotation;
33typedef unsigned short SizeID;
34typedef unsigned short SubpixelOrder;
35typedef unsigned short Connection;
36typedef unsigned short XRandrRotation;
37typedef unsigned short XRandrSizeID;
38typedef unsigned short XRandrSubpixelOrder;
39typedef unsigned long XRandrModeFlags;
40
41#define RANDR_NAME "RANDR"
42#define RANDR_MAJOR 1
43#define RANDR_MINOR 6
44
45#define RRNumberErrors 5
46#define RRNumberEvents 2
47#define RRNumberRequests 47
48
49#define X_RRQueryVersion 0
50/* we skip 1 to make old clients fail pretty immediately */
51#define X_RROldGetScreenInfo 1
52#define X_RR1_0SetScreenConfig 2
53/* V1.0 apps share the same set screen config request id */
54#define X_RRSetScreenConfig 2
55#define X_RROldScreenChangeSelectInput 3
56/* 3 used to be ScreenChangeSelectInput; deprecated */
57#define X_RRSelectInput 4
58#define X_RRGetScreenInfo 5
59
60/* V1.2 additions */
61#define X_RRGetScreenSizeRange 6
62#define X_RRSetScreenSize 7
63#define X_RRGetScreenResources 8
64#define X_RRGetOutputInfo 9
65#define X_RRListOutputProperties 10
66#define X_RRQueryOutputProperty 11
67#define X_RRConfigureOutputProperty 12
68#define X_RRChangeOutputProperty 13
69#define X_RRDeleteOutputProperty 14
70#define X_RRGetOutputProperty 15
71#define X_RRCreateMode 16
72#define X_RRDestroyMode 17
73#define X_RRAddOutputMode 18
74#define X_RRDeleteOutputMode 19
75#define X_RRGetCrtcInfo 20
76#define X_RRSetCrtcConfig 21
77#define X_RRGetCrtcGammaSize 22
78#define X_RRGetCrtcGamma 23
79#define X_RRSetCrtcGamma 24
80
81/* V1.3 additions */
82#define X_RRGetScreenResourcesCurrent 25
83#define X_RRSetCrtcTransform 26
84#define X_RRGetCrtcTransform 27
85#define X_RRGetPanning 28
86#define X_RRSetPanning 29
87#define X_RRSetOutputPrimary 30
88#define X_RRGetOutputPrimary 31
89
90#define RRTransformUnit (1L << 0)
91#define RRTransformScaleUp (1L << 1)
92#define RRTransformScaleDown (1L << 2)
93#define RRTransformProjective (1L << 3)
94
95/* v1.4 */
96#define X_RRGetProviders 32
97#define X_RRGetProviderInfo 33
98#define X_RRSetProviderOffloadSink 34
99#define X_RRSetProviderOutputSource 35
100#define X_RRListProviderProperties 36
101#define X_RRQueryProviderProperty 37
102#define X_RRConfigureProviderProperty 38
103#define X_RRChangeProviderProperty 39
104#define X_RRDeleteProviderProperty 40
105#define X_RRGetProviderProperty 41
106
107/* v1.5 */
108#define X_RRGetMonitors 42
109#define X_RRSetMonitor 43
110#define X_RRDeleteMonitor 44
111
112/* v1.6 */
113#define X_RRCreateLease 45
114#define X_RRFreeLease 46
115
116/* Event selection bits */
117#define RRScreenChangeNotifyMask (1L << 0)
118/* V1.2 additions */
119#define RRCrtcChangeNotifyMask (1L << 1)
120#define RROutputChangeNotifyMask (1L << 2)
121#define RROutputPropertyNotifyMask (1L << 3)
122/* V1.4 additions */
123#define RRProviderChangeNotifyMask (1L << 4)
124#define RRProviderPropertyNotifyMask (1L << 5)
125#define RRResourceChangeNotifyMask (1L << 6)
126/* V1.6 additions */
127#define RRLeaseNotifyMask (1L << 7)
128
129/* Event codes */
130#define RRScreenChangeNotify 0
131/* V1.2 additions */
132#define RRNotify 1
133/* RRNotify Subcodes */
134#define RRNotify_CrtcChange 0
135#define RRNotify_OutputChange 1
136#define RRNotify_OutputProperty 2
137#define RRNotify_ProviderChange 3
138#define RRNotify_ProviderProperty 4
139#define RRNotify_ResourceChange 5
140/* V1.6 additions */
141#define RRNotify_Lease 6
142/* used in the rotation field; rotation and reflection in 0.1 proto. */
143#define RR_Rotate_0 1
144#define RR_Rotate_90 2
145#define RR_Rotate_180 4
146#define RR_Rotate_270 8
147
148/* new in 1.0 protocol, to allow reflection of screen */
149
150#define RR_Reflect_X 16
151#define RR_Reflect_Y 32
152
153#define RRSetConfigSuccess 0
154#define RRSetConfigInvalidConfigTime 1
155#define RRSetConfigInvalidTime 2
156#define RRSetConfigFailed 3
157
158/* new in 1.2 protocol */
159
160#define RR_HSyncPositive 0x00000001
161#define RR_HSyncNegative 0x00000002
162#define RR_VSyncPositive 0x00000004
163#define RR_VSyncNegative 0x00000008
164#define RR_Interlace 0x00000010
165#define RR_DoubleScan 0x00000020
166#define RR_CSync 0x00000040
167#define RR_CSyncPositive 0x00000080
168#define RR_CSyncNegative 0x00000100
169#define RR_HSkewPresent 0x00000200
170#define RR_BCast 0x00000400
171#define RR_PixelMultiplex 0x00000800
172#define RR_DoubleClock 0x00001000
173#define RR_ClockDivideBy2 0x00002000
174
175#define RR_Connected 0
176#define RR_Disconnected 1
177#define RR_UnknownConnection 2
178
179#define BadRROutput 0
180#define BadRRCrtc 1
181#define BadRRMode 2
182#define BadRRProvider 3
183#define BadRRLease 4
184
185/* Conventional RandR output properties */
186
187#define RR_PROPERTY_BACKLIGHT "Backlight"
188#define RR_PROPERTY_RANDR_EDID "EDID"
189#define RR_PROPERTY_SIGNAL_FORMAT "SignalFormat"
190#define RR_PROPERTY_SIGNAL_PROPERTIES "SignalProperties"
191#define RR_PROPERTY_CONNECTOR_TYPE "ConnectorType"
192#define RR_PROPERTY_CONNECTOR_NUMBER "ConnectorNumber"
193#define RR_PROPERTY_COMPATIBILITY_LIST "CompatibilityList"
194#define RR_PROPERTY_CLONE_LIST "CloneList"
195#define RR_PROPERTY_BORDER "Border"
196#define RR_PROPERTY_BORDER_DIMENSIONS "BorderDimensions"
197#define RR_PROPERTY_GUID "GUID"
198#define RR_PROPERTY_RANDR_TILE "TILE"
199#define RR_PROPERTY_NON_DESKTOP "non-desktop"
200
201/* roles this device can carry out */
202#define RR_Capability_None 0
203#define RR_Capability_SourceOutput 1
204#define RR_Capability_SinkOutput 2
205#define RR_Capability_SourceOffload 4
206#define RR_Capability_SinkOffload 8
207
208#endif /* _RANDR_H_ */
209