mirror of
https://gitlab.freedesktop.org/xorg/proto/xorgproto.git
synced 2025-12-20 04:40:10 +01:00
RandR version 1.4 additions
This adds the specification and protocol header definitions for the RandR 1.4 protocol changes, including * Per crtc pixmaps and pixmap origins * Sprite position and image transforms * SetCrtcConfigs request Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
1325b01124
commit
dd14a22755
4 changed files with 278 additions and 4 deletions
|
|
@ -22,7 +22,7 @@ dnl
|
|||
dnl Process this file with autoconf to create configure.
|
||||
|
||||
AC_PREREQ([2.60])
|
||||
AC_INIT([RandrProto], [1.3.2],
|
||||
AC_INIT([RandrProto], [1.4.0],
|
||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
|
||||
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
||||
AM_MAINTAINER_MODE
|
||||
|
|
|
|||
14
randr.h
14
randr.h
|
|
@ -40,11 +40,11 @@ typedef unsigned long XRandrModeFlags;
|
|||
|
||||
#define RANDR_NAME "RANDR"
|
||||
#define RANDR_MAJOR 1
|
||||
#define RANDR_MINOR 3
|
||||
#define RANDR_MINOR 4
|
||||
|
||||
#define RRNumberErrors 3
|
||||
#define RRNumberEvents 2
|
||||
#define RRNumberRequests 32
|
||||
#define RRNumberRequests 37
|
||||
|
||||
#define X_RRQueryVersion 0
|
||||
/* we skip 1 to make old clients fail pretty immediately */
|
||||
|
|
@ -92,6 +92,13 @@ typedef unsigned long XRandrModeFlags;
|
|||
#define RRTransformScaleDown (1L << 2)
|
||||
#define RRTransformProjective (1L << 3)
|
||||
|
||||
/* V1.4 additions */
|
||||
#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 */
|
||||
|
|
@ -149,6 +156,9 @@ typedef unsigned long XRandrModeFlags;
|
|||
#define BadRRCrtc 1
|
||||
#define BadRRMode 2
|
||||
|
||||
/* new in 1.4 protocol */
|
||||
#define RR_CurrentScanoutPixmap 1 /* current scanout pixmap in RRSetCrtcConfigs */
|
||||
|
||||
/* Conventional RandR output properties */
|
||||
|
||||
#define RR_PROPERTY_BACKLIGHT "Backlight"
|
||||
|
|
|
|||
119
randrproto.h
119
randrproto.h
|
|
@ -49,6 +49,7 @@
|
|||
#define RRMode CARD32
|
||||
#define RRCrtc CARD32
|
||||
#define RRModeFlags CARD32
|
||||
#define PictFormat CARD32
|
||||
|
||||
#define Rotation CARD16
|
||||
#define SizeID CARD16
|
||||
|
|
@ -645,6 +646,124 @@ typedef struct {
|
|||
} xRRGetOutputPrimaryReply;
|
||||
#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;
|
||||
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 + 24)
|
||||
|
||||
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;
|
||||
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 32
|
||||
|
||||
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
|
||||
*/
|
||||
|
|
|
|||
147
randrproto.txt
147
randrproto.txt
|
|
@ -124,7 +124,23 @@ following features are added in this version:
|
|||
• Panning. It was removed with RandR 1.2 because the old semantics didn't
|
||||
fit any longer. With RandR 1.3 panning can be specified per crtc.
|
||||
|
||||
1.1 Acknowledgements
|
||||
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. These pixmaps can be associated with a window for use
|
||||
with OpenGL or drawn to directly.
|
||||
|
||||
• 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.
|
||||
|
||||
1.99 Acknowledgements
|
||||
|
||||
Our thanks to the contributors to the design found on the xpert mailing
|
||||
list, in particular:
|
||||
|
|
@ -302,6 +318,49 @@ REFRESH { rates: LISTofCARD16 }
|
|||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
5.4. Protocol Types added in version 1.4 of the extension
|
||||
|
||||
SCANOUTPIXMAPINFO { format: PICTFORMAT
|
||||
maxWidth, maxHeight: CARD16
|
||||
rotations: SETofROTATION }
|
||||
|
||||
CRTCCONFIG { crtc: CRTC
|
||||
x, y: INT16
|
||||
mode: MODE
|
||||
rotation: ROTATION
|
||||
sprite-position-transform: TRANSFORM
|
||||
sprite-image-transform: TRANSFORM
|
||||
outputs: LISTofOUTPUT
|
||||
pixmap: PIXMAP, None or CurrenScanoutPixmap
|
||||
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.
|
||||
|
||||
'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 current in use will remain in use, whether
|
||||
that is the screen pixmap or some other allocated scanout pixmap.
|
||||
|
||||
'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 pixmap value must specify a scanout pixmap as created by
|
||||
RRCreateScanoutPixmap, or a Match error results.
|
||||
|
||||
The specified pixmap must be at least as large as the area to
|
||||
be scanned out, or a Match error results.
|
||||
|
||||
The specified pixmap must have had the specified 'rotation'
|
||||
included as a part of its creation paramaeters, or a Match
|
||||
error results.
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
6. Extension Initialization
|
||||
|
||||
The name of this extension is "RANDR".
|
||||
|
|
@ -1238,6 +1297,92 @@ 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
|
||||
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 is set
|
||||
in a single operation, either succeeding or failing without
|
||||
any partial execution.
|
||||
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue