randr.h revision 7a0d67332f33bc21290d63bc7c8150b0cf0a4b21
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Copyright © 2000 Compaq Computer Corporation
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Copyright © 2002 Hewlett Packard Company
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Copyright © 2006 Intel Corporation
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Copyright © 2008 Red Hat, Inc.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Permission to use, copy, modify, distribute, and sell this software and its
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * documentation for any purpose is hereby granted without fee, provided that
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * the above copyright notice appear in all copies and that both that copyright
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * notice and this permission notice appear in supporting documentation, and
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * that the name of the copyright holders not be used in advertising or
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * publicity pertaining to distribution of the software without specific,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * written prior permission. The copyright holders make no representations
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * about the suitability of this software for any purpose. It is provided "as
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * is" without express or implied warranty.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * OF THIS SOFTWARE.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Keith Packard, Intel Corporation
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifndef _RANDR_H_
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define _RANDR_H_
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned short Rotation;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned short SizeID;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned short SubpixelOrder;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned short Connection;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned short XRandrRotation;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned short XRandrSizeID;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned short XRandrSubpixelOrder;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned long XRandrModeFlags;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RANDR_NAME "RANDR"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RANDR_MAJOR 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RANDR_MINOR 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRNumberErrors 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRNumberEvents 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRNumberRequests 32
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRQueryVersion 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* we skip 1 to make old clients fail pretty immediately */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RROldGetScreenInfo 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RR1_0SetScreenConfig 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* V1.0 apps share the same set screen config request id */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRSetScreenConfig 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RROldScreenChangeSelectInput 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* 3 used to be ScreenChangeSelectInput; deprecated */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRSelectInput 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRGetScreenInfo 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* V1.2 additions */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRGetScreenSizeRange 6
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRSetScreenSize 7
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRGetScreenResources 8
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRGetOutputInfo 9
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRListOutputProperties 10
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRQueryOutputProperty 11
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRConfigureOutputProperty 12
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRChangeOutputProperty 13
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRDeleteOutputProperty 14
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRGetOutputProperty 15
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRCreateMode 16
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRDestroyMode 17
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRAddOutputMode 18
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRDeleteOutputMode 19
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRGetCrtcInfo 20
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRSetCrtcConfig 21
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRGetCrtcGammaSize 22
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRGetCrtcGamma 23
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRSetCrtcGamma 24
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* V1.3 additions */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRGetScreenResourcesCurrent 25
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRSetCrtcTransform 26
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRGetCrtcTransform 27
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRGetPanning 28
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRSetPanning 29
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRSetOutputPrimary 30
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define X_RRGetOutputPrimary 31
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRTransformUnit (1L << 0)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRTransformScaleUp (1L << 1)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRTransformScaleDown (1L << 2)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRTransformProjective (1L << 3)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* Event selection bits */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRScreenChangeNotifyMask (1L << 0)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* V1.2 additions */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRCrtcChangeNotifyMask (1L << 1)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RROutputChangeNotifyMask (1L << 2)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RROutputPropertyNotifyMask (1L << 3)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* Event codes */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRScreenChangeNotify 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* V1.2 additions */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRNotify 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* RRNotify Subcodes */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRNotify_CrtcChange 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRNotify_OutputChange 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRNotify_OutputProperty 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* used in the rotation field; rotation and reflection in 0.1 proto. */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RR_Rotate_0 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RR_Rotate_90 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RR_Rotate_180 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RR_Rotate_270 8
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* new in 1.0 protocol, to allow reflection of screen */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RR_Reflect_X 16
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RR_Reflect_Y 32
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRSetConfigSuccess 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRSetConfigInvalidConfigTime 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRSetConfigInvalidTime 2
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RRSetConfigFailed 3
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* new in 1.2 protocol */
#define RR_HSyncPositive 0x00000001
#define RR_HSyncNegative 0x00000002
#define RR_VSyncPositive 0x00000004
#define RR_VSyncNegative 0x00000008
#define RR_Interlace 0x00000010
#define RR_DoubleScan 0x00000020
#define RR_CSync 0x00000040
#define RR_CSyncPositive 0x00000080
#define RR_CSyncNegative 0x00000100
#define RR_HSkewPresent 0x00000200
#define RR_BCast 0x00000400
#define RR_PixelMultiplex 0x00000800
#define RR_DoubleClock 0x00001000
#define RR_ClockDivideBy2 0x00002000
#define RR_Connected 0
#define RR_Disconnected 1
#define RR_UnknownConnection 2
#define BadRROutput 0
#define BadRRCrtc 1
#define BadRRMode 2
/* Conventional RandR output properties */
#define RR_PROPERTY_RANDR_EDID "EDID"
#define RR_PROPERTY_SIGNAL_FORMAT "SignalFormat"
#define RR_PROPERTY_SIGNAL_PROPERTIES "SignalProperties"
#define RR_PROPERTY_CONNECTOR_TYPE "ConnectorType"
#define RR_PROPERTY_CONNECTOR_NUMBER "ConnectorNumber"
#define RR_PROPERTY_COMPATIBILITY_LIST "CompatibilityList"
#define RR_PROPERTY_CLONE_LIST "CloneList"
#endif /* _RANDR_H_ */