diff options
Diffstat (limited to 'randrproto.txt')
-rw-r--r-- | randrproto.txt | 100 |
1 files changed, 73 insertions, 27 deletions
diff --git a/randrproto.txt b/randrproto.txt index ee513e7..20cac75 100644 --- a/randrproto.txt +++ b/randrproto.txt @@ -1,5 +1,5 @@ The X Resize, Rotate and Reflect Extension - Version 1.3.1 + Version 1.4.0 2009-10-5 Jim Gettys @@ -371,46 +371,77 @@ SCANOUTPIXMAPINFO { format: PICTFORMAT 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, None or CurrentScanoutPixmap + pixmap: PIXMAP or None pixmap-x, pixmap-y: INT16 } - The sprite-position-transform and sprite-image-transform - values are used as in the RRSetCrtcSpriteTransform request - position-transform and image-transform parameters. + If 'set' includes SetCrtcSpritePositionTransform, then + sprite-position-transform is used as in the + RRSetCrtcSpriteTransform request position-transform parameter. - '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 'pixmap' is 'CurrentScanoutPixmap', then - whatever source is currently in use will remain in use, whether - that is the screen pixmap or some other allocated scanout pixmap. + If 'set' includes SetCrtcSpriteImageTransform, then + sprite-image-transform is used as in the + RRSetCrtcSpriteTransform request image-transform parameter. - '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' 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. - The pixmap value must specify a scanout pixmap as created by - RRCreateScanoutPixmap, or a Match error results. + 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. - The specified pixmap must be at least as large as the area to - be scanned out, or a Match error results. + If 'set' includes SetCrtcPixmap, then 'pixmap' must specify a + scanout pixmap as created by RRCreateScanoutPixmap or + None. Otherwise a Match error results. Furthermore: - The specified pixmap must have had the specified 'rotation' - included as a part of its creation paramaeters, or a Match - error results. + * '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: - 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. + * 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. ❧❧❧❧❧❧❧❧❧❧❧ @@ -1413,6 +1444,7 @@ dynamic changes in the display environment. ┌─── RRSetCrtcConfigs drawable: DRAWABLE + set: SETofSCREENFLAG screen-pixmap-width: CARD16 screen-pixmap-height: CARD16 screen-width: CARD16 @@ -1426,10 +1458,24 @@ dynamic changes in the display environment. Errors: Value, Match This works much like RRSetScreenSize followed by a sequence of - RRSetCrtcConfig, except that the entire configuration is set + 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. |