mirror of
https://gitlab.freedesktop.org/xorg/proto/xorgproto.git
synced 2025-12-20 04:40:10 +01:00
Merge branch 'transform-proposal'
Conflicts: randr.h randrproto.h randrproto.txt
This commit is contained in:
commit
6c17940a79
3 changed files with 176 additions and 23 deletions
11
randr.h
11
randr.h
|
|
@ -40,11 +40,11 @@ typedef unsigned long XRandrModeFlags;
|
|||
|
||||
#define RANDR_NAME "RANDR"
|
||||
#define RANDR_MAJOR 1
|
||||
#define RANDR_MINOR 2
|
||||
#define RANDR_MINOR 3
|
||||
|
||||
#define RRNumberErrors 3
|
||||
#define RRNumberEvents 2
|
||||
#define RRNumberRequests 26
|
||||
#define RRNumberRequests 28
|
||||
|
||||
#define X_RRQueryVersion 0
|
||||
/* we skip 1 to make old clients fail pretty immediately */
|
||||
|
|
@ -80,6 +80,13 @@ typedef unsigned long XRandrModeFlags;
|
|||
|
||||
/* V1.3 additions */
|
||||
#define X_RRGetScreenResourcesCurrent 25
|
||||
#define X_RRSetCrtcTransform 26
|
||||
#define X_RRGetCrtcTransform 27
|
||||
|
||||
#define RRTransformUnit (1L << 0)
|
||||
#define RRTransformScaleUp (1L << 1)
|
||||
#define RRTransformScaleDown (1L << 2)
|
||||
#define RRTransformProjective (1L << 3)
|
||||
|
||||
/* Event selection bits */
|
||||
#define RRScreenChangeNotifyMask (1L << 0)
|
||||
|
|
|
|||
45
randrproto.h
45
randrproto.h
|
|
@ -32,6 +32,7 @@
|
|||
#define _XRANDRP_H_
|
||||
|
||||
#include <X11/extensions/randr.h>
|
||||
#include <X11/extensions/renderproto.h>
|
||||
|
||||
#define Window CARD32
|
||||
#define Drawable CARD32
|
||||
|
|
@ -590,6 +591,46 @@ typedef struct {
|
|||
} xRRGetScreenResourcesCurrentReply;
|
||||
#define sz_xRRGetScreenResourcesCurrentReply 32
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RRCrtc crtc B32;
|
||||
xRenderTransform transform;
|
||||
CARD16 nbytesFilter; /* number of bytes in filter name */
|
||||
CARD16 pad B16;
|
||||
} xRRSetCrtcTransformReq;
|
||||
|
||||
#define sz_xRRSetCrtcTransformReq 48
|
||||
|
||||
typedef struct {
|
||||
CARD8 reqType;
|
||||
CARD8 randrReqType;
|
||||
CARD16 length B16;
|
||||
RRCrtc crtc B32;
|
||||
} xRRGetCrtcTransformReq;
|
||||
|
||||
#define sz_xRRGetCrtcTransformReq 8
|
||||
|
||||
typedef struct {
|
||||
BYTE type;
|
||||
CARD8 status;
|
||||
CARD16 sequenceNumber B16;
|
||||
CARD32 length B32;
|
||||
xRenderTransform pendingTransform;
|
||||
BYTE hasTransforms;
|
||||
CARD8 pad0;
|
||||
CARD16 pad1 B16;
|
||||
xRenderTransform currentTransform;
|
||||
CARD32 pad2 B32;
|
||||
CARD16 pendingNbytesFilter B16; /* number of bytes in filter name */
|
||||
CARD16 pendingNparamsFilter B16; /* number of filter params */
|
||||
CARD16 currentNbytesFilter B16; /* number of bytes in filter name */
|
||||
CARD16 currentNparamsFilter B16; /* number of filter params */
|
||||
} xRRGetCrtcTransformReply;
|
||||
|
||||
#define sz_xRRGetCrtcTransformReply 96
|
||||
|
||||
/*
|
||||
* event
|
||||
*/
|
||||
|
|
@ -631,8 +672,8 @@ typedef struct {
|
|||
CARD8 type; /* always evBase + RRNotify */
|
||||
CARD8 subCode; /* RRNotify_OutputChange */
|
||||
CARD16 sequenceNumber B16;
|
||||
Time timestamp B32; /* time crtc was changed */
|
||||
Time configTimestamp B32; /* time crtc was changed */
|
||||
Time timestamp B32; /* time output was changed */
|
||||
Time configTimestamp B32; /* time config was changed */
|
||||
Window window B32; /* window requesting notification */
|
||||
RROutput output B32; /* affected output */
|
||||
RRCrtc crtc B32; /* current crtc */
|
||||
|
|
|
|||
143
randrproto.txt
143
randrproto.txt
|
|
@ -1,6 +1,6 @@
|
|||
The X Resize, Rotate and Reflect Extension
|
||||
Version 1.2
|
||||
2006-4-13
|
||||
Version 1.3
|
||||
2006-20-7
|
||||
|
||||
Jim Gettys
|
||||
Jim.Gettys@hp.com
|
||||
|
|
@ -110,6 +110,17 @@ bandwidth for large resolution screens. This is exposed in RandR by
|
|||
requiring that nothing be connected to the second CRTC when driving a high
|
||||
resolution screen on the first.
|
||||
|
||||
1.3 Introduction to version 1.3 of the extension
|
||||
|
||||
Version 1.3 builds on the changes made with version 1.2 and adds some new
|
||||
capabilities without fundmentally changing the extension again. The
|
||||
following features are added in this version:
|
||||
|
||||
• Projective Transforms. The implementation work for general rotation
|
||||
support made it trivial to add full projective transformations. These
|
||||
can be used to scale the screen up/down as well as perform projector
|
||||
keystone correct or other effects.
|
||||
|
||||
1.1 Acknowledgements
|
||||
|
||||
Our thanks to the contributors to the design found on the xpert mailing
|
||||
|
|
@ -846,8 +857,10 @@ dynamic changes in the display environment.
|
|||
'x' and 'y' indicate the position of this CRTC within the screen
|
||||
region. They will be set to 0 when the CRTC is disabled.
|
||||
|
||||
'width' and 'height' indicate the size of the area presented by this
|
||||
CRTC.
|
||||
'width' and 'height' indicate the size of the area within the screen
|
||||
presented by this CRTC. This may be different than the size of the
|
||||
mode due to rotation. They will be set to 0 when the CRTC is
|
||||
disabled.
|
||||
|
||||
'mode' indicates which mode is active, or None indicating that the
|
||||
CRTC has been disabled and is not displaying the screen contents.
|
||||
|
|
@ -1002,6 +1015,50 @@ dynamic changes in the display environment.
|
|||
Unlike RRGetScreenResources, this merely returns the current
|
||||
configuration, and does not poll for hardware changes.
|
||||
|
||||
┌───
|
||||
RRSetCrtcTransform
|
||||
crtc: CRTC
|
||||
transform: TRANSFORM
|
||||
filter: STRING8
|
||||
values: LISTofFIXED
|
||||
└───
|
||||
Errors: Crtc, Match
|
||||
|
||||
This request provides a mechanism that is more general than the existing
|
||||
rotation and reflection values for describing the transformation from frame
|
||||
buffer image to crtc presentation. 'transform' is a full 2D projective
|
||||
transformations from screen coordinate space to crtc coordinate space. This
|
||||
transformation is applied before the rotation and reflection values to
|
||||
compute the complete transform.
|
||||
|
||||
'filter' and 'values' specify a Render filter that may be used by the server
|
||||
when transforming data from frame buffer to crtc.
|
||||
|
||||
This request sets the transform to be used at the next RRSetCrtcConfig
|
||||
request execution; it does not cause any change to occur in the current
|
||||
configuration.
|
||||
|
||||
When a non-identity transformation is in use, the rectangle returned by
|
||||
RRGetCrtcInfo defines the bounding rectangle of the screen that is projected
|
||||
to the crtc. It is this projected rectangle which must be within the area of
|
||||
the screen when the mode is set.
|
||||
|
||||
┌───
|
||||
RRGetCrtcTransform
|
||||
crtc: CRTC
|
||||
▶
|
||||
pending-transform: TRANSFORM
|
||||
pending-filter: STRING8
|
||||
pending-values: LISTofFIXED
|
||||
current-transform: TRANSFORM
|
||||
current-filter: STRING8
|
||||
current-values: LISTofFIXED
|
||||
└───
|
||||
|
||||
This request returns the pending and current transforms for the specified
|
||||
CRTC. The pending transform will be the same as the current transform if no
|
||||
new pending transform has been set since the last call to RRSetCrtcConfig.
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
8. Extension Events
|
||||
|
|
@ -1024,12 +1081,12 @@ factors, such as re-cabling a monitor, etc.
|
|||
configTimestamp: TIMESTAMP time config data was changed
|
||||
root: WINDOW root window of screen
|
||||
window: WINDOW window requesting notification
|
||||
size-id: SIZEID index of new size
|
||||
size-id: SIZEID index of new SCREENSIZE
|
||||
subpixelOrder: SUBPIXELORDER order of subpixels
|
||||
widthInPixels: CARD16
|
||||
heightInPixels: CARD16
|
||||
widthInMillimeters: CARD16
|
||||
heightInMillimeters: CARD16
|
||||
widthInPixels: CARD16 width in pixels of the new SCREENSIZE
|
||||
heightInPixels: CARD16 height in pixels of the new SCREENSIZE
|
||||
widthInMillimeters: CARD16 width in mm of the new SCREENSIZE
|
||||
heightInMillimeters: CARD16 height in mm of the new SCREENSIZE
|
||||
└───
|
||||
This event is generated whenever the screen configuration is changed
|
||||
and sent to requesting clients. 'timestamp' indicates when the
|
||||
|
|
@ -1055,6 +1112,13 @@ factors, such as re-cabling a monitor, etc.
|
|||
just at the time when a display manager or log in script might
|
||||
be changing the screen size or configuration.
|
||||
|
||||
Note that the sizes in this event reflect the new SCREENSIZE and
|
||||
thus will appear rotated by the 'rotation' parameter from the sizes
|
||||
of the screen itself. In other words, when rotation is 90 or 270,
|
||||
widthInPixels in this event will be the same as the height value
|
||||
from a ConfigureNotify that reflects the same size change. This
|
||||
will probably confuse developers.
|
||||
|
||||
8.1 Events added in version 1.2 of the RandR extension
|
||||
|
||||
┌───
|
||||
|
|
@ -1099,27 +1163,26 @@ factors, such as re-cabling a monitor, etc.
|
|||
┌───
|
||||
RRCrtcChangeNotify
|
||||
timestamp: TIMESTAMP time monitor was changed
|
||||
config-timestamp: TIMESTAMP time config data was changed
|
||||
root: WINDOW root window of screen
|
||||
window: WINDOW window requesting notification
|
||||
crtc: CRTC CRTC which changed
|
||||
mode: MODE new mode
|
||||
rotation: ROTATION; new rotation
|
||||
x: INT16 x position of CRTC within screen
|
||||
y: INT16 y position of CRTC within screen
|
||||
width: CARD16 width of new mode
|
||||
height: CARD16 height of new mode
|
||||
└───
|
||||
This event is generated whenever the CRTC configuration is changed
|
||||
and sent to requesting clients. 'timestamp' indicates when the
|
||||
CRTC configuration was changed. 'config-timestamp' says when the
|
||||
last time the configuration was changed. 'root' is the root of the
|
||||
screen the change occurred on, 'window' is window selecting for this
|
||||
event.
|
||||
CRTC configuration was changed. 'window' is window selecting for this
|
||||
event. 'mode' is the new mode, or None if the crtc is disabled.
|
||||
'x' and 'y' mark the location in the screen where this CRTC
|
||||
is reading data. 'width' and 'height' indicate the size of the
|
||||
mode. 'x', 'y, 'width' and 'height' are all zero when 'mode' is None.
|
||||
|
||||
This event is sent whenever the monitor's configuration changes
|
||||
or if a new monitor configuration becomes available that was
|
||||
not available in the past. In this case (config-timestamp in
|
||||
the event not being equal to the config-timestamp returned in
|
||||
the last call to RRGetCrtcModes), the client MUST call
|
||||
not available in the past. In this case, the client MUST call
|
||||
RRGetCrtcModes to update its view of possible monitor
|
||||
configurations to have a correct view of possible monitor
|
||||
organizations.
|
||||
|
|
@ -1723,7 +1786,7 @@ A.2.2 Protocol Requests added with version 1.3
|
|||
┌───
|
||||
RRGetScreenResourcesCurrent
|
||||
1 CARD8 major opcode
|
||||
1 8 RandR opcode
|
||||
1 25 RandR opcode
|
||||
2 2 length
|
||||
4 WINDOW window
|
||||
▶
|
||||
|
|
@ -1745,6 +1808,48 @@ A.2.2 Protocol Requests added with version 1.3
|
|||
p unused, p=pad(b)
|
||||
└───
|
||||
|
||||
┌───
|
||||
RRSetCrtcTransform
|
||||
1 CARD8 major opcode
|
||||
1 26 RandR opcode
|
||||
2 12+(n+p)/4+v length
|
||||
4 CRTC crtc
|
||||
36 TRANSFORM transform
|
||||
2 CARD16 filter length
|
||||
2 unused
|
||||
n STRING8 filter name
|
||||
p unused, p=pad(n)
|
||||
4v FIXED filter params
|
||||
└───
|
||||
|
||||
┌───
|
||||
RRGetCrtcTransform
|
||||
1 CARD8 major opcode
|
||||
1 27 RandR opcode
|
||||
2 2 length
|
||||
4 CRTC crtc
|
||||
▶
|
||||
1 1 Reply
|
||||
1 unused
|
||||
2 CARD16 sequence number
|
||||
4 16+(pn+pnp)/4+(cn+cnp)/4+pf+cf reply length
|
||||
36 TRANSFORM pending transform
|
||||
1 BOOL has transforms
|
||||
3 unused
|
||||
36 TRANSFORM current transform
|
||||
4 unused
|
||||
2 pn pending filter name length
|
||||
2 pf pending filter num params
|
||||
2 cn current filter name length
|
||||
2 cf current filter num params
|
||||
pn STRING8 pending filter name
|
||||
pnp unused, pnp=pad(pn)
|
||||
4*pf FIXED pending filter params
|
||||
cn STRING8 current filter name
|
||||
cnp unused, cnp=pad(cn)
|
||||
4*cf FIXED current filter params
|
||||
└───
|
||||
|
||||
A.3 Protocol Events
|
||||
|
||||
┌───
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue