summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--randr.h26
-rw-r--r--randrproto.h122
-rw-r--r--randrproto.txt244
3 files changed, 4 insertions, 388 deletions
diff --git a/randr.h b/randr.h
index 9cb9403..04604aa 100644
--- a/randr.h
+++ b/randr.h
@@ -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