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