diff options
-rw-r--r-- | randr.h | 26 | ||||
-rw-r--r-- | randrproto.h | 122 | ||||
-rw-r--r-- | randrproto.txt | 244 |
3 files changed, 4 insertions, 388 deletions
@@ -40,11 +40,11 @@ typedef unsigned long XRandrModeFlags; #define RANDR_NAME "RANDR" #define RANDR_MAJOR 1 -#define RANDR_MINOR 4 +#define RANDR_MINOR 3 #define RRNumberErrors 3 #define RRNumberEvents 2 -#define RRNumberRequests 37 +#define RRNumberRequests 32 #define X_RRQueryVersion 0 /* we skip 1 to make old clients fail pretty immediately */ @@ -92,28 +92,6 @@ typedef unsigned long XRandrModeFlags; #define RRTransformScaleDown (1L << 2) #define RRTransformProjective (1L << 3) -/* V1.4 additions */ - -#define RR_SetScreenPixmapSize (1 << 0) -#define RR_SetScreenSize (1 << 1) -#define RR_SetScreenSizeInMillimeters (1 << 2) -#define RR_SetScreenCrtcs (1 << 3) - -#define RR_SetCrtcPosition (1 << 4) -#define RR_SetCrtcMode (1 << 5) -#define RR_SetCrtcRotation (1 << 6) -#define RR_SetCrtcOutputs (1 << 7) -#define RR_SetCrtcSpritePositionTransform (1 << 8) -#define RR_SetCrtcSpriteImageTransform (1 << 9) -#define RR_SetCrtcPixmap (1 << 10) -#define RR_SetCrtcPixmapPosition (1 << 11) - -#define X_RRQueryScanoutPixmaps 32 -#define X_RRCreateScanoutPixmap 33 -#define X_RRSetCrtcSpriteTransform 34 -#define X_RRGetCrtcSpriteTransform 35 -#define X_RRSetCrtcConfigs 36 - /* Event selection bits */ #define RRScreenChangeNotifyMask (1L << 0) /* V1.2 additions */ diff --git a/randrproto.h b/randrproto.h index 00bae2d..3b98a9f 100644 --- a/randrproto.h +++ b/randrproto.h @@ -49,7 +49,6 @@ #define RRMode CARD32 #define RRCrtc CARD32 #define RRModeFlags CARD32 -#define PictFormat CARD32 #define Rotation CARD16 #define SizeID CARD16 @@ -647,126 +646,6 @@ typedef struct { #define sz_xRRGetOutputPrimaryReply 32 /* - * Additions for 1.4 - */ - -typedef struct { - PictFormat format B32; - CARD16 maxWidth B16, maxHeight B16; - Rotation rotations B16; - CARD16 pad0 B16; - CARD32 pad1 B32; -} xRRScanoutPixmapInfo; -#define sz_xRRScanoutPixmapInfo 16 - -typedef struct { - RRCrtc crtc B32; - CARD32 set B32; - INT16 x B16, y B16; - RRMode mode B32; - Rotation rotation B16; - CARD16 nOutput B16; - xRenderTransform spritePositionTransform; - xRenderTransform spriteImageTransform; - Pixmap pixmap B32; - INT16 xPixmap B16, yPixmap B16; -} xRRCrtcConfig; -#define sz_xRRCrtcConfig (2*sz_xRenderTransform + 28) - -typedef struct { - CARD8 reqType; - CARD8 randrReqType; - CARD16 length B16; - Drawable drawable B32; -} xRRQueryScanoutPixmapsReq; -#define sz_xRRQueryScanoutPixmapsReq 8 - -typedef struct { - BYTE type; - CARD8 pad; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xRRQueryScanoutPixmapsReply; -#define sz_xRRQueryScanoutPixmapsReply 32 - -typedef struct { - CARD8 reqType; - CARD8 randrReqType; - CARD16 length B16; - Pixmap pid B32; - Drawable drawable B32; - CARD16 width B16, height B16; - PictFormat format B32; - Rotation rotations B16; - CARD16 pad B16; -} xRRCreateScanoutPixmapReq; -#define sz_xRRCreateScanoutPixmapReq 24 - -typedef struct { - CARD8 reqType; - CARD8 randrReqType; - CARD16 length B16; - RRCrtc crtc B32; - xRenderTransform positionTransform; - xRenderTransform imageTransform; -} xRRSetCrtcSpriteTransformReq; -#define sz_xRRSetCrtcSpriteTransformReq (2*sz_xRenderTransform + 8) - -typedef struct { - CARD8 reqType; - CARD8 randrReqType; - CARD16 length B16; - RRCrtc crtc B32; -} xRRGetCrtcSpriteTransformReq; -#define sz_xRRGetCrtcSpriteTransformReq 8 - -typedef struct { - BYTE type; - CARD8 pad; - CARD16 sequenceNumber B16; - CARD32 length B32; - xRenderTransform positionTransform; - xRenderTransform imageTransform; -} xRRGetCrtcSpriteTransformReply; -#define sz_xRRGetCrtcSpriteTransformReply (2*sz_xRenderTransform + 8) - -typedef struct { - CARD8 reqType; - CARD8 randrReqType; - CARD16 length B16; - Drawable drawable B32; - CARD32 set B32; - CARD16 screenPixmapWidth B16, screenPixmapHeight B16; - CARD16 screenWidth B16, screenHeight B16; - CARD32 widthInMillimeters B32; - CARD32 heightInMillimeters B32; - CARD16 nConfigs B16; - CARD16 pad0 B16; - CARD32 pad1 B32; -} xRRSetCrtcConfigsReq; -#define sz_xRRSetCrtcConfigsReq 36 - -typedef struct { - BYTE type; - CARD8 status; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B16; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xRRSetCrtcConfigsReply; -#define sz_xRRSetCrtcConfigsReply 32 - -/* * event */ typedef struct { @@ -899,7 +778,6 @@ typedef struct { } xRRSetPanningReply; #define sz_xRRSetPanningReply 32 -#undef PictFormat #undef RRModeFlags #undef RRCrtc #undef RRMode diff --git a/randrproto.txt b/randrproto.txt index e90b1cd..7c297e2 100644 --- a/randrproto.txt +++ b/randrproto.txt @@ -1,5 +1,5 @@ The X Resize, Rotate and Reflect Extension - Version 1.4.0 + Version 1.3.1 2009-10-5 Jim Gettys @@ -121,22 +121,7 @@ following features are added in this version: 1.4 Introduction to version 1.4 of the extension -Version 1.4 adds a couple more capabilities to further expose the -underlying hardware to clients - - • Per-crtc pixmaps. This provides for multiple scan-out buffers - which applications can create and assign to arbitrary collections - of crtcs. - - • Sprite position and image transforms. These provide a projective - transform for both the hot spot location and the sprite image - itself for each CRTC. - - • RRSetCrtcConfigs request. This supplies a set of - crtc configurations to the server that must be applied together - or not at all. This can reduce screen flicker while also - providing the server a complete configuration for appropriate - resource management. +Version 1.4 adds an optional Border property. • An optional Border property. This property allows a client to specify that the viewport of the CRTC is smaller than the active @@ -144,34 +129,6 @@ underlying hardware to clients for compensating for the overscan behavior of certain televisions. -The first two additions, per-crtc pixmaps and sprite transforms are -designed to solve two problems: - - 1) Screen transforms. The software transform code in the X server - uses a shadow frame buffer, adding another copy to every graphics - operation. Worse, the server has no idea about when clients are - done drawing a frame, so the user gets additional latency and - judder. - - The goal is to move this operation out to the compositing manager - which already deals with an extra copy of the frame buffer for - many operations. Have the compositing manager create and draw to a - separate pixmap for scanout. It can perform whatever transforms - are required to get the image in the right orientation for the - user. - - 2) Hardware scanout engine size limits. With a single scanout buffer - for the entire screen, it's possible for the user to ask for a - configuration which requires that scanout buffer to be larger than - the hardware is capable of scanning out from. Again, having the - compositing manager create a pixmap for each CRTC will allow for - any configuration where monitor position within the virtual space - isn't limited by the scanout limits. - -In both of these cases, the Sprite transforms are necessary to ensure -that the sprite appears at the desired spot on each CRTC and with the -right shape. - 1.99 Acknowledgements Our thanks to the contributors to the design found on the xpert mailing @@ -350,102 +307,6 @@ REFRESH { rates: LISTofCARD16 } ❧❧❧❧❧❧❧❧❧❧❧ -5.4. Protocol Types added in version 1.4 of the extension - -SCANOUTPIXMAPINFO { format: PICTFORMAT - maxWidth, maxHeight: CARD16 - rotations: SETofROTATION } - - 'format' is the format of the pixels within the scanout - pixmap. Only 'Direct' formats are supported, this will never - be an 'Indexed' format. - - 'maxWidth' and 'maxHeight' define the largest supported - scanout pixmap. There is no minimum size; scanout pixmaps down - to 1x1 may be created. - - 'rotations' lists the set of rotations which can be provided - without additional latency or memory usage within the - environment. This typically means that they are supported - directly by the hardware. It is expected that a compositing - manager will perform other transforms as a part of the - compositing process in conjunction with the sprite transforms - described in this extension. - -SCREENFLAG { SetScreenPixmapSize - SetScreenSize - SetScreenSizeInMillimeters - SetScreenCrtcs } - -CRTCFLAG { SetCrtcPosition - SetCrtcMode - SetCrtcRotation - SetCrtcOutputs - SetCrtcSpritePositionTransform - SetCrtcSpriteImageTransform - SetCrtcPixmap - SetCrtcPixmapPosition } - -CRTCCONFIG { crtc: CRTC - set: SETofCRTCFLAG - x, y: INT16 - mode: MODE - rotation: ROTATION - sprite-position-transform: TRANSFORM - sprite-image-transform: TRANSFORM - outputs: LISTofOUTPUT - pixmap: PIXMAP or None - pixmap-x, pixmap-y: INT16 } - - If 'set' includes SetCrtcSpritePositionTransform, then - sprite-position-transform is used as in the - RRSetCrtcSpriteTransform request position-transform parameter. - - If 'set' includes SetCrtcSpriteImageTransform, then - sprite-image-transform is used as in the - RRSetCrtcSpriteTransform request image-transform parameter. - - If 'set' includes SetCrtcPixmap, then 'pixmap' specifies the - origin of the pixel data to be presented on 'crtc'. If - 'pixmap' is None, then data will be presented from the screen - pixmap. - - If 'set' includes SetCrtcPixmapPosition, then 'pixmap-x' and - 'pixmap-y' specify the origin of the scanout data within the - pixmap, the area from that location to pixmap-x + - width-of(mode), pixmap-y + height-of(mode) is what will be - seen on the connected outputs. - - If 'set' includes SetCrtcPixmap, then 'pixmap' must specify a - scanout pixmap as created by RRCreateScanoutPixmap or - None. Otherwise a Match error results. Furthermore: - - * 'pixmap' must be at least as large as the area to be - scanned out, or a Match error results. - - * If 'pixmap' is destroyed while still being used as a - scanout pixmap, then the associated CRTC will have its - scanout pixmap set back to None, the CRTC origin set back - to 0,0 (to make sure it fits) and the screen pixmap width - and height increased to be at least as big as the current - CRTC mode. - - * Future crtc changes that do not change the scanout pixmap - will cause an existing scanout pixmap to be resized to be - large enough to hold the new mode at the then-current - pixmap-x/pixmap-y location. - - If 'set' includes SetCrtcRotation then: - - * Any new or existing scanout pixmap must have had the - specified 'rotation' included as a part of its creation - parameters, or a Match error results. - - * If no scanout pixmap is in use, then the crtc must support - 'rotation' else a Value error results. - - ❧❧❧❧❧❧❧❧❧❧❧ - 6. Extension Initialization The name of this extension is "RANDR". @@ -1382,107 +1243,6 @@ dynamic changes in the display environment. ❧❧❧❧❧❧❧❧❧❧❧ -7.3. Extension Requests added in version 1.4 of the extension. - -┌─── - RRQueryScanoutPixmaps - window: WINDOW - ▶ - infos: LISTofSCANOUTPIXMAPINFO -└─── - Errors: Window - - This request returns information about the server support for - alternate scanout pixmaps. For each pictformat, there is a set - of rotations and a maximum supported size. The rotations here - are those provided by the scanout hardware itself, not by - software emulation. - -┌─── - RRCreateScanoutPixmap - pixmap: PIXMAP - drawable: DRAWABLE - width, height: CARD16 - format: PICTFORMAT - rotations: SETofROTATION -└─── - Errors: Drawable, Match, Value - - Creates a pixmap which can subsequently be used as a scanout - buffer for the screen associated with 'drawable'. 'rotations' - is the set of rotation values which may be used with the - resulting scanout buffer when it is associated with a CRTC. - - 'format' must be one of the supported scanout formats, or a - Match error results. - - 'width' and 'height' must be within the supported range for - the specified format or a Value error results. - - 'rotations' must be a subset of those supported for the - specified format or a Match error results. - -┌─── - RRSetCrtcSpriteTransform - crtc: CRTC - position-transform: TRANSFORM - image-transform: TRANSFORM -└─── - Sets the sprite transforms for the specified crtc, any sprites - presented on this crtc will have their positions transformed - by the position-transform matrix. Sprite images displayed on the crtc - will be transformed by the image-transform matrix. - -┌─── - RRGetCrtcSpriteTransform - crtc: CRTC - ▶ - position-transform: TRANSFORM - image-transform: TRANSFORM -└─── - Gets the sprite transforms for the specified crtc. - -┌─── - RRSetCrtcConfigs - drawable: DRAWABLE - set: SETofSCREENFLAG - screen-pixmap-width: CARD16 - screen-pixmap-height: CARD16 - screen-width: CARD16 - screen-height: CARD16 - width-in-millimeters: CARD32 - height-in-millimeters: CARD32 - configs: LISTofCRTCCONFIG - ▶ - status: RRCONFIGSTATUS -└─── - Errors: Value, Match - - This works much like RRSetScreenSize followed by a sequence of - RRSetCrtcConfig, except that the entire configuration can be set - in a single operation, either succeeding or failing without - any partial execution. - - If 'set' includes 'SetScreenPixmapSize', then - 'screen-pixmap-width' and 'screen-pixmap-height' specify the - new screen pixmap size. - - If 'set' includes 'SetScreenSize', then 'screen-width' and - 'screen-height' specify the new screen size. - - If 'set' includes 'SetScreenSizeInMillimeters', then - 'width-in-millimeters' and 'height-in-millimeters' specify - the new screen physical size. - - If 'set' includes 'SetScreenCrtcs', then 'configs' includes - the list of new CRTC configurations. - - In addition to the pre-1.4 semantics, this request adds the - ability to specific a scanout pixmap for each crtc, and - integrates the 1.4 sprite transform request as well. - - ❧❧❧❧❧❧❧❧❧❧❧ - 8. Extension Events Clients MAY select for ConfigureNotify on the root window to be |