mirror of
https://gitlab.freedesktop.org/xorg/proto/xorgproto.git
synced 2026-05-08 19:28:02 +02:00
Rearrange modes to be listed with screen resources. Encoding.
Modes are now listed as screen resources instead of with the output; they're shared across outputs for cloning. Wrote up encoding.
This commit is contained in:
parent
4e47d7af05
commit
e81693720d
1 changed files with 372 additions and 234 deletions
606
randrproto.txt
606
randrproto.txt
|
|
@ -110,7 +110,7 @@ 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.
|
||||
|
||||
2. Acknowlegements
|
||||
1.1 Acknowlegements
|
||||
|
||||
Our thanks to the contributors to the design found on the xpert mailing
|
||||
list, in particular:
|
||||
|
|
@ -124,6 +124,8 @@ Thomas Winischhofer for the hardware-accelerated SiS rotation implementation
|
|||
Matthew Tippet and Kevin Martin for splitting outputs and CRTCs to more
|
||||
fully expose what video hardware can do
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
2. Screen change model
|
||||
|
||||
Screens may change dynamically, either under control of this extension, or
|
||||
|
|
@ -166,15 +168,28 @@ pop-up menus and other pop up windows will position themselves correctly in
|
|||
the face of screen configuration changes (the issue is ensuring that pop-ups
|
||||
are visible on the reconfigured screen).
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
3. Data Types
|
||||
|
||||
The subpixel order is shared with the Render extension, and is documented
|
||||
there. The only datatype defined is the screen size, defined in the normal
|
||||
(0 degree) orientation.
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
4. Errors
|
||||
|
||||
There are no new error types defined by this extension.
|
||||
Errors are sent using core X error reports.
|
||||
|
||||
Output
|
||||
A value for an OUTPUT argument does not name a defined OUTPUT.
|
||||
CRTC
|
||||
A value for a CRTC argument does not name a defined CRTC.
|
||||
Mode
|
||||
A value for a MODE argument does not name a defined MODE.
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
5. Protocol Types
|
||||
|
||||
|
|
@ -198,9 +213,9 @@ SIZEID { CARD16 }
|
|||
|
||||
MODE { XID or None }
|
||||
|
||||
CRTC { CARD16 }
|
||||
CRTC { XID }
|
||||
|
||||
OUTPUT { CARD16 }
|
||||
OUTPUT { XID }
|
||||
|
||||
CONNECTION { Connected, Disconnected, UnknownConnection }
|
||||
|
||||
|
|
@ -224,16 +239,19 @@ MODEFLAG { hsync_positive hsync_negative
|
|||
double_clock
|
||||
clock_divide_by_2 }
|
||||
|
||||
OUTPUTMODE { id: MODE
|
||||
widthInPixels, heightInPixels: CARD16
|
||||
widthInMillimeters, heightInMillimeters: CARD32
|
||||
dotClock: CARD32
|
||||
hSyncStart, hSyncEnd, hTotal, hSkew: CARD16
|
||||
vSyncStart, vSyncEnd, vTotal: CARD16
|
||||
modeFlags: SETofMODEFLAG }
|
||||
MODEINFO { id: MODE
|
||||
name: STRING
|
||||
widthInPixels, heightInPixels: CARD16
|
||||
widthInMillimeters, heightInMillimeters: CARD32
|
||||
dotClock: CARD32
|
||||
hSyncStart, hSyncEnd, hTotal, hSkew: CARD16
|
||||
vSyncStart, vSyncEnd, vTotal: CARD16
|
||||
modeFlags: SETofMODEFLAG }
|
||||
|
||||
REFRESH { rates: LISTofCARD16 }
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
6. Extension Initialization
|
||||
|
||||
The name of this extension is "RANDR".
|
||||
|
|
@ -255,6 +273,8 @@ RRQueryVersion
|
|||
It is the clients responsibility to ensure that the server
|
||||
supports a version which is compatible with its expectations.
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
7. Extension Requests
|
||||
|
||||
RRSelectInput
|
||||
|
|
@ -344,11 +364,10 @@ RRSetScreenConfig
|
|||
Value errors are generated when 'rotation', 'rate' or 'size-id'
|
||||
are invalid.
|
||||
|
||||
RRGetScreenInfo
|
||||
┌───
|
||||
RRGetScreenInfo
|
||||
window: WINDOW
|
||||
|
||||
▶
|
||||
|
||||
▶
|
||||
rotations: SETofROTATION
|
||||
root: WINDOW
|
||||
timestamp: TIMESTAMP
|
||||
|
|
@ -358,8 +377,7 @@ RRGetScreenInfo
|
|||
rate: CARD16
|
||||
sizes: LISTofSCREENSIZE
|
||||
refresh: LISTofREFRESH
|
||||
|
||||
where:
|
||||
└───
|
||||
|
||||
Errors: Window
|
||||
|
||||
|
|
@ -397,8 +415,6 @@ RRGetScreenInfo
|
|||
current size when the server resets) is the first size in the
|
||||
list.
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
7.1. Extension Requests added in version 1.2 of the extension
|
||||
|
||||
As introduced above, version 1.2 of the extension splits the screen size
|
||||
|
|
@ -409,26 +425,28 @@ range. As crtcs and outputs are added and removed from the system, the set
|
|||
returned by the extension will change so that applications can detect
|
||||
dynamic changes in the display environment.
|
||||
|
||||
RRGetScreenSizeRange
|
||||
┌───
|
||||
RRGetScreenSizeRange
|
||||
window: WINDOW
|
||||
|
||||
▶
|
||||
▶
|
||||
|
||||
CARD16 minWidth, minHeight
|
||||
CARD16 maxWidth, maxHeight
|
||||
|
||||
└───
|
||||
Errors: Window
|
||||
|
||||
Returns the range of possible screen sizes. The screen may be set to
|
||||
any size within this range.
|
||||
|
||||
RRSetScreenSize
|
||||
┌───
|
||||
RRSetScreenSize
|
||||
window: WINDOW
|
||||
width: CARD16
|
||||
height: CARD16
|
||||
width-in-millimeters: CARD32
|
||||
height-in-millimeters: CARD32
|
||||
|
||||
└───
|
||||
Errors: Window, Match, Value
|
||||
|
||||
Sets the screen to the specified size. 'width' and 'height' must be
|
||||
|
|
@ -441,20 +459,20 @@ RRSetScreenSize
|
|||
extension and the core protocol. They must be non-zero, or Value
|
||||
error results.
|
||||
|
||||
RRGetScreenResources
|
||||
┌───
|
||||
RRGetScreenResources
|
||||
window: WINDOW
|
||||
|
||||
▶
|
||||
|
||||
▶
|
||||
timestamp: TIMESTAMP
|
||||
config-timestamp: TIMESTAMP
|
||||
number-of-crtcs: CARD16
|
||||
number-of-outputs: CARD16
|
||||
|
||||
crtcs: LISTofCRTC
|
||||
outputs: LISTofOUTPUT
|
||||
modes: LISTofMODEINFO
|
||||
└───
|
||||
Errors: Window
|
||||
|
||||
RRGetScreenResources returns information about the number of outputs
|
||||
and crtcs connected to the screen associated with 'window'.
|
||||
RRGetScreenResources returns the list of outputs and crtcs connected
|
||||
to the screen associated with 'window'.
|
||||
|
||||
'timestamp' indicates when the configuration was last set.
|
||||
|
||||
|
|
@ -464,43 +482,49 @@ RRGetScreenResources
|
|||
to date, to ensure clients can be well behaved in the face of race
|
||||
conditions.
|
||||
|
||||
'number-of-crtcs' indicates the valid range of CRTC indices.
|
||||
'crtcs' contains the list of CRTCs associated with the screen.
|
||||
|
||||
'number-of-outputs' indicates the valid range of OUTPUT indices.
|
||||
'outputs' contains the list of outputs associated with the screen.
|
||||
|
||||
RRGetOutputInfo
|
||||
window: WINDOW
|
||||
'modes' contains the list of modes associated with the screen
|
||||
|
||||
This request explicitly asks the server to ensure that the
|
||||
configuration data is up-to-date wrt the hardware. If that requires
|
||||
polling, this is when such polling would take place. Requests for
|
||||
further information should not poll, but rather return the data
|
||||
collected at this point.
|
||||
|
||||
┌───
|
||||
RRGetOutputInfo
|
||||
output: OUTPUT
|
||||
|
||||
▶
|
||||
|
||||
config-timestamp: TIMESTAMP
|
||||
▶
|
||||
status: RRCONFIGSTATUS
|
||||
timestamp: TIMESTAMP
|
||||
crtc: CRTC
|
||||
|
||||
config-timestamp: TIMESTAMP
|
||||
name: STRING
|
||||
connection: CONNECTION
|
||||
crtcs: LISTofCRTC
|
||||
clones: LISTofOUTPUT
|
||||
modes: LISTofOUTPUTMODE
|
||||
modes: LISTofMODE
|
||||
└───
|
||||
|
||||
Errors: Window
|
||||
Errors: Output,
|
||||
|
||||
RRGetOutputInfo returns information about the current and available
|
||||
configurations for the specified output connected to the screen
|
||||
associated with 'window'.
|
||||
configurations 'output'.
|
||||
|
||||
If 'config-timestamp' does not match the current configuration
|
||||
timestamp (as returned by RRGetScreenResources), 'status' is set to
|
||||
InvalidConfigTime and the remaining reply data is empty. Otherwise,
|
||||
'status' is set to Success.
|
||||
|
||||
'timestamp' indicates when the configuration was last set.
|
||||
|
||||
'crtc' is the current source CRTC for video data, or Disabled if the
|
||||
output is not connected to any CRTC.
|
||||
|
||||
'config-timestamp' indicates when the configuration information last
|
||||
changed. Requests to configure the output will fail unless the
|
||||
timestamp indicates that the information the client is using is up
|
||||
to date, to ensure clients can be well behaved in the face of race
|
||||
conditions.
|
||||
|
||||
'name' is a UTF-8 encoded string designed to be presented to the
|
||||
user to indicate which output this is. E.g. "S-Video" or "DVI".
|
||||
|
||||
|
|
@ -522,21 +546,78 @@ RRGetOutputInfo
|
|||
connect this output to a CRTC not using one of these modes results
|
||||
in a Match error.
|
||||
|
||||
RRGetCrtcInfo
|
||||
window: WINDOW
|
||||
┌───
|
||||
RRCreateMode
|
||||
window: WINDOW
|
||||
modeinfo: MODEINFO
|
||||
▶
|
||||
mode: MODE
|
||||
└───
|
||||
Errors: Window, Name, Value
|
||||
|
||||
'modeinfo' provides a new mode for outputs on the screen
|
||||
associated with 'window'. If the name of 'modeinfo' names an
|
||||
existing mode, a Name error is returned. If some parameter of the
|
||||
mode is not valid in some other way, a Value error is returned.
|
||||
|
||||
The returned 'mode' provides the id for the mode.
|
||||
|
||||
┌───
|
||||
RRDestroyMode
|
||||
mode: MODE
|
||||
└───
|
||||
Errors: Mode, Access
|
||||
|
||||
The user-defined 'mode' is destroyed. 'mode' must name a mode
|
||||
defined with RRCreateMode, else an Match error is returned. If
|
||||
'mode' is in use by some CRTC or Output, then an Access error is
|
||||
returned.
|
||||
|
||||
┌───
|
||||
RRAddOutputMode
|
||||
output: OUTPUT
|
||||
mode: MODE
|
||||
└───
|
||||
Errors: Output, Mode, Match
|
||||
|
||||
'output' indicates which output is to be configured.
|
||||
|
||||
'mode' specifies which mode to add. If 'mode' is not valid for
|
||||
'output', then a Match error is generated.
|
||||
|
||||
This request generates OutputChangeNotify events.
|
||||
|
||||
┌───
|
||||
RRDeleteOutputMode
|
||||
output: OUTPUT
|
||||
mode: MODE
|
||||
└───
|
||||
Errors: Output, Mode
|
||||
|
||||
'output' indicates which output is to be configured.
|
||||
|
||||
'mode' specifies which mode to delete. 'mode' must have been added
|
||||
with RRAddOutputMode, else an Access error is returned. 'mode' must
|
||||
not be active, else a Match error is returned.
|
||||
|
||||
This request generates OutputChangeNotify events.
|
||||
|
||||
┌───
|
||||
RRGetCrtcInfo
|
||||
crtc: CRTC
|
||||
|
||||
▶
|
||||
|
||||
config-timestamp: TIMESTAMP
|
||||
▶
|
||||
status: RRCONFIGSTATUS
|
||||
timestamp: TIMESTAMP
|
||||
x, y: INT16
|
||||
width, height: CARD16
|
||||
mode: MODE
|
||||
rotation: ROTATION
|
||||
|
||||
config-timestamp: TIMESTAMP
|
||||
rotations: SETofROTATION
|
||||
default-mode: MODE
|
||||
outputs: LISTofOUTPUT
|
||||
|
||||
rotations: SETofROTATION
|
||||
possible-outputs: LISTofOUTPUT
|
||||
└───
|
||||
|
||||
Errors: Window
|
||||
|
||||
|
|
@ -544,71 +625,36 @@ RRGetCrtcInfo
|
|||
configurations for the specified crtc connected to the screen
|
||||
associated with 'window'.
|
||||
|
||||
If 'config-timestamp' does not match the current configuration
|
||||
timestamp (as returned by RRGetScreenResources), 'status' is set to
|
||||
InvalidConfigTime and the remaining reply data is empty. Otherwise,
|
||||
'status' is set to Success.
|
||||
|
||||
'timestamp' indicates when the configuration was last set.
|
||||
|
||||
'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.
|
||||
|
||||
'mode' indicates which mode is active, or Disabled indicating
|
||||
that the CRTC has been disabled and is not displaying the screen
|
||||
contents.
|
||||
'mode' indicates which mode is active, or None indicating that the
|
||||
CRTC has been disabled and is not displaying the screen contents.
|
||||
|
||||
'rotation' indicates the active rotation. It is set to Rotate_0
|
||||
when the CRTC is disabled.
|
||||
|
||||
'config-timestamp' indicates when the configuration information last
|
||||
changed. Requests to configure the CRTC will fail unless the
|
||||
timestamp indicates that the information the client is using is up
|
||||
to date, to ensure clients can be well behaved in the face of race
|
||||
conditions.
|
||||
|
||||
'outputs' is the list of outputs currently connected to this CRTC
|
||||
and is empty when the CRTC is disabled.
|
||||
|
||||
'rotations' contains the set of rotations and reflections supported
|
||||
by the CRTC.
|
||||
|
||||
'default-mode' is the mode the CRTC is set to at server
|
||||
reset time.
|
||||
'possible-outputs' lists all of the outputs which may be connected
|
||||
to this CRTC.
|
||||
|
||||
RRAddOutputMode
|
||||
window: WINDOW
|
||||
output: OUTPUT
|
||||
config-timestamp: TIMESTAMP
|
||||
timestamp: TIMESTAMP
|
||||
mode: OUTPUTMODE
|
||||
|
||||
▶
|
||||
|
||||
Errors: Window, Value, Match, Name
|
||||
|
||||
'window' and 'output' which output is to be configured. If 'output'
|
||||
is out of range, a Value error is returned.
|
||||
|
||||
'mode' provides a new mode for the output. If the name of 'mode'
|
||||
names an existing mode, a Name error is returned. If 'mode' cannot be
|
||||
supported by the specified output, a Match error is returned. If some
|
||||
parameter of the mode is not valid in some other way, a Value error
|
||||
is returned.
|
||||
|
||||
This request generates OutputChangeNotify events.
|
||||
|
||||
RRDeleteOutputMode
|
||||
window: WINDOW
|
||||
output: OUTPUT
|
||||
name: STRING
|
||||
|
||||
▶
|
||||
|
||||
Errors: Window, Value, Name
|
||||
|
||||
'window' and 'output' indicate which output is to be configured. If
|
||||
'output' is out of range, a Value error is returned.
|
||||
|
||||
'name' specifies which mode to delete. If no mode of the specified
|
||||
name exists, a Name error is returned. The named mode must have been
|
||||
added with RRAddOutputMode, else an Access error is returned. The
|
||||
named mode must not be active, else a Match error is returned.
|
||||
|
||||
RRSetCrtcConfig
|
||||
window: WINDOW
|
||||
┌───
|
||||
RRSetCrtcConfig
|
||||
crtc: CRTC
|
||||
timestamp: TIMESTAMP
|
||||
config-timestamp: TIMESTAMP
|
||||
|
|
@ -616,16 +662,11 @@ RRSetCrtcConfig
|
|||
mode: MODE
|
||||
rotation: ROTATION
|
||||
outputs: LISTofOUTPUT
|
||||
|
||||
▶
|
||||
|
||||
▶
|
||||
status: RRCONFIGSTATUS
|
||||
new-timestamp: TIMESTAMP
|
||||
config-timestamp: TIMESTAMP
|
||||
root: WINDOW
|
||||
monitor: CRTC
|
||||
subpixelOrder: SUBPIXELORDER
|
||||
|
||||
└───
|
||||
Errors: Value, Match
|
||||
|
||||
If 'timestamp' is less than the time when the configuration was last
|
||||
|
|
@ -680,15 +721,11 @@ RRSetCrtcConfig
|
|||
'new-time-stamp' contains the time at which this request was
|
||||
executed.
|
||||
|
||||
'config-timestamp' contains the time when the possible screen
|
||||
configurations were last changed.
|
||||
|
||||
'root' contains the root window for the screen indicated by the
|
||||
window.
|
||||
|
||||
'subpixelOrder' contains the resulting subpixel order of the monitor
|
||||
to allow correct subpixel rendering.
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
8. Extension Events
|
||||
|
||||
Clients MAY select for ConfigureNotify on the root window to be
|
||||
|
|
@ -700,7 +737,8 @@ RRScreenChangeNotify is sent if RRSelectInput has requested it
|
|||
whenever properties of the screen change, which may be due to external
|
||||
factors, such as recabling a monitor, etc.
|
||||
|
||||
RRScreenChangeNotify
|
||||
┌───
|
||||
RRScreenChangeNotify
|
||||
|
||||
rotation: ROTATION; new rotation
|
||||
sequenceNumber: CARD16 low 16 bits of request's seq. number
|
||||
|
|
@ -714,7 +752,7 @@ RRScreenChangeNotify
|
|||
heightInPixels: CARD16
|
||||
widthInMillimeters: CARD16
|
||||
heightInMillimeters: CARD16
|
||||
|
||||
└───
|
||||
This event is generated whenever the screen configuration is changed
|
||||
and sent to requesting clients. 'timestamp' indicates when the
|
||||
screen configuration was changed. 'configTimestamp' says when the
|
||||
|
|
@ -741,12 +779,17 @@ RRScreenChangeNotify
|
|||
|
||||
8.1 Events added in version 1.2 of the RandR extension
|
||||
|
||||
RROutputChangeNotify:
|
||||
┌───
|
||||
RROutputChangeNotify:
|
||||
sequence-number: CARD16 low 16 bits of request's seq. number
|
||||
timestamp: TIMESTAMP time screen was reconfigured
|
||||
config-timestamp: TIMESTAMP time available config data was changed
|
||||
root: WINDOW root window of screen
|
||||
window: WINDOW window requesting notification
|
||||
output: OUTPUT output affected by change
|
||||
crtc: CRTC connected CRTC or None
|
||||
mode: MODE mode in use on CRTC or None
|
||||
connection: CONNECTION connection status
|
||||
└───
|
||||
|
||||
This event is generated whenever the available output configurations
|
||||
have changed and is sent to requesting clients. 'timestamp'
|
||||
|
|
@ -757,8 +800,8 @@ RROutputChangeNotify:
|
|||
precise change can be detected by examining the new state of the
|
||||
system.
|
||||
|
||||
RRCrtcChangeNotify /* XXX need to fit to 32 bytes */
|
||||
|
||||
┌───
|
||||
RRCrtcChangeNotify /* XXX need to fit to 32 bytes */
|
||||
sequence-number: CARD16 low 16 bits of request's seq. number
|
||||
timestamp: TIMESTAMP time monitor was changed
|
||||
config-timestamp: TIMESTAMP time config data was changed
|
||||
|
|
@ -770,7 +813,7 @@ RRCrtcChangeNotify /* XXX need to fit to 32 bytes */
|
|||
subpixelOrder: SUBPIXELORDER order of subpixels
|
||||
x: INT16 x position of CRTC within screen
|
||||
y: INT16 y position of CRTC within screen
|
||||
|
||||
└───
|
||||
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
|
||||
|
|
@ -795,6 +838,8 @@ RRCrtcChangeNotify /* XXX need to fit to 32 bytes */
|
|||
just at the time when a display manager or log in script might
|
||||
be changing the monitor size or configuration.
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
9. Extension Versioning
|
||||
|
||||
The RandR extension was developed in parallel with the implementation
|
||||
|
|
@ -820,7 +865,8 @@ list of what each version before 1.0 implemented:
|
|||
|
||||
1.1: Added refresh rates
|
||||
|
||||
1.2: Separate out screens from monitors, switch to full VESA modes
|
||||
1.2: Separate screens from CRTCs and outputs, switch to full VESA
|
||||
modes
|
||||
|
||||
Compatibility between 0.0 and 1.0 was *NOT* preserved, and 0.0 clients
|
||||
will fail against 1.0 servers. The wire encoding op-codes were
|
||||
|
|
@ -829,6 +875,8 @@ graceful way. Version 1.1 servers and clients are cross compatible with
|
|||
1.0. Version 1.1 is considered to be stable and we intend upward
|
||||
compatibility from this point.
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
10. Relationship with other extensions
|
||||
|
||||
Two other extensions have a direct relationship with this extension. This
|
||||
|
|
@ -866,6 +914,8 @@ re-querying the configuration with the Xinerama extension will get updated
|
|||
information. It is probably better to view RandR as a superset of Xinerama
|
||||
at this point and use it in preference to Xinerama where both are present.
|
||||
|
||||
❧❧❧❧❧❧❧❧❧❧❧
|
||||
|
||||
Appendix A. Protocol Encoding
|
||||
|
||||
Syntactic Conventions
|
||||
|
|
@ -876,29 +926,38 @@ protocol encoding document.
|
|||
|
||||
A.1 Common Types
|
||||
|
||||
ROTATION
|
||||
┌───
|
||||
ROTATION
|
||||
0x0001 Rotate_0
|
||||
0x0002 Rotate_90
|
||||
0x0004 Rotate_180
|
||||
0x0008 Rotate_270
|
||||
0x0010 Reflect_X
|
||||
0x0020 Reflect_Y
|
||||
└───
|
||||
Used to encode both sets of possible rotations and individual
|
||||
selected rotations.
|
||||
|
||||
|
||||
RRSELECTMASK
|
||||
┌───
|
||||
RRSELECTMASK
|
||||
0x0001 ScreenChangeNotifyMask
|
||||
0x0002 CrtcChangeNotifyMask Added in version 1.2
|
||||
|
||||
RRCONFIGSTATUS
|
||||
0x0004 OutputChangeNotifyMask Added in version 1.2
|
||||
└───
|
||||
Event select mask for RRSelectInput
|
||||
|
||||
┌───
|
||||
RRCONFIGSTATUS
|
||||
0x0 Success
|
||||
0x1 InvalidConfigTime
|
||||
0x2 InvalidTime
|
||||
0x3 Failed
|
||||
└───
|
||||
Return status for requests which depend on time.
|
||||
|
||||
SIZEID
|
||||
0xffff Disabled
|
||||
|
||||
CRTCMODE (36) Added in version 1.2
|
||||
┌───
|
||||
MODEINFO (40) Added in version 1.2
|
||||
4 CARD32 id
|
||||
2 CARD16 width in pixels
|
||||
2 CARD16 height in pixels
|
||||
4 CARD32 width in millimeters
|
||||
|
|
@ -911,41 +970,41 @@ A.1 Common Types
|
|||
2 CARD16 v sync start
|
||||
2 CARD16 v sync end
|
||||
2 CARD16 v total
|
||||
2 CARD16 name length (n)
|
||||
2 CARD16 name length
|
||||
4 SETofMODEFLAG mode flags
|
||||
└───
|
||||
|
||||
A monitor mode specifies the complete CRTC timings for
|
||||
An output mode specifies the complete CRTC timings for
|
||||
a specfic mode. The vertical and horizontal synchronization rates
|
||||
can be computed given the dot clock and the h total/v total
|
||||
values. If the dot clock is zero, then all of the timing
|
||||
parameters and flags are not used, and must be zero as this
|
||||
indicates that the timings are unknown or otherwise unused.
|
||||
|
||||
The location of the name in the encoding is specified separately
|
||||
|
||||
A.2 Protocol Requests
|
||||
|
||||
|
||||
Opcodes 0x1 and 0x3 were used in the 0.0 protocols, and will return
|
||||
errors if used in version 1.0.
|
||||
|
||||
RRQueryVersion
|
||||
┌───
|
||||
RRQueryVersion
|
||||
|
||||
1 CARD8 major opcode
|
||||
1 0x01 RandR opcode
|
||||
1 0x00 RandR opcode
|
||||
2 3 length
|
||||
4 CARD32 major version
|
||||
4 CARD32 minor version
|
||||
▶
|
||||
▶
|
||||
1 1 Reply
|
||||
1 unused
|
||||
2 CARD16 sequence number
|
||||
4 0 reply length
|
||||
1 CARD32 major version
|
||||
1 CARD32 minor version
|
||||
└───
|
||||
|
||||
|
||||
RRSetScreenConfig
|
||||
┌───
|
||||
RRSetScreenConfig
|
||||
|
||||
1 CARD8 major opcode
|
||||
1 0x02 RandR opcode
|
||||
|
|
@ -957,7 +1016,7 @@ errors if used in version 1.0.
|
|||
2 ROTATION rotation/reflection
|
||||
2 CARD16 refresh rate (1.1 only)
|
||||
2 CARD16 pad
|
||||
▶
|
||||
▶
|
||||
1 1 Reply
|
||||
1 RRCONFIGSTATUS status
|
||||
2 CARD16 sequence number
|
||||
|
|
@ -969,9 +1028,10 @@ errors if used in version 1.0.
|
|||
2 CARD16 pad4
|
||||
4 CARD32 pad5
|
||||
4 CARD32 pad6
|
||||
|
||||
|
||||
RRSelectInput
|
||||
└───
|
||||
|
||||
┌───
|
||||
RRSelectInput
|
||||
|
||||
1 CARD8 major opcode
|
||||
1 0x04 RandR opcode
|
||||
|
|
@ -979,15 +1039,16 @@ errors if used in version 1.0.
|
|||
4 WINDOW window
|
||||
2 SETofRRSELECTMASK enable
|
||||
2 CARD16 pad
|
||||
|
||||
|
||||
RRGetScreenInfo
|
||||
└───
|
||||
|
||||
┌───
|
||||
RRGetScreenInfo
|
||||
|
||||
1 CARD8 major opcode
|
||||
1 0x05 RandR opcode
|
||||
2 2 length
|
||||
4 WINDOW window
|
||||
▶
|
||||
▶
|
||||
1 1 Reply
|
||||
1 CARD8 set of Rotations
|
||||
2 CARD16 sequence number
|
||||
|
|
@ -1011,16 +1072,17 @@ errors if used in version 1.0.
|
|||
REFRESH
|
||||
2 CARD16 number of rates (n)
|
||||
2n CARD16 rates
|
||||
└───
|
||||
|
||||
A.2.1 Protocol Requests added with version 1.2
|
||||
|
||||
RRGetScreenSizeRange
|
||||
|
||||
┌───
|
||||
RRGetScreenSizeRange
|
||||
1 CARD8 major opcode
|
||||
1 0x06 RandR opcode
|
||||
2 2 length
|
||||
4 WINDOW window
|
||||
▶
|
||||
▶
|
||||
1 1 Reply
|
||||
1 unused
|
||||
2 CARD16 sequence number
|
||||
|
|
@ -1033,10 +1095,10 @@ A.2.1 Protocol Requests added with version 1.2
|
|||
4 unused
|
||||
4 unused
|
||||
4 unused
|
||||
└───
|
||||
|
||||
|
||||
RRSetScreenSize
|
||||
|
||||
┌───
|
||||
RRSetScreenSize
|
||||
1 CARD8 major opcode
|
||||
1 0x07 RandR opcode
|
||||
2 5 length
|
||||
|
|
@ -1045,93 +1107,152 @@ A.2.1 Protocol Requests added with version 1.2
|
|||
2 CARD16 height
|
||||
4 CARD32 width in millimeters
|
||||
4 CARD32 height in millimeters
|
||||
|
||||
└───
|
||||
|
||||
RRGetCrtcInfo
|
||||
|
||||
┌───
|
||||
RRGetScreenResources
|
||||
1 CARD8 major opcode
|
||||
1 0x08 RandR opcode
|
||||
2 2 length
|
||||
4 WINDOW window
|
||||
▶
|
||||
▶
|
||||
1 1 Reply
|
||||
1 unused
|
||||
2 CARD16 sequence number
|
||||
4 i*6 + m*9 + (b+p)/4 reply length
|
||||
4 WINDOW root
|
||||
2 CARD16 i = number of CRTCINFO following
|
||||
2 CARD16 m = number of CRTCMODE following
|
||||
2 CARD16 b = size of name array following
|
||||
14 unused
|
||||
i*24 LISTofCRTCINFO one per monitor
|
||||
m*36 LISTofCRTCMODE for all monitors
|
||||
b LISTofCARD8 list of mode names
|
||||
p pad pad(b)
|
||||
|
||||
CRTCINFO
|
||||
4 c+o+10m+(b+p)/4 reply length
|
||||
4 TIMESTAMP timestamp
|
||||
4 TIMESTAMP config-timestamp
|
||||
2 INT16 x
|
||||
2 INT16 y
|
||||
2 ROTATION rotation
|
||||
2 MODE mode
|
||||
2 MODE default mode
|
||||
2 SETofROTATION rotations
|
||||
2 CARD16 start offset in LISTofCRTCMODE
|
||||
2 CARD16 number of CRTCMODE
|
||||
2 c number of CRTCs
|
||||
2 o number of outputs
|
||||
2 m number of modeinfos
|
||||
2 b total bytes in mode names
|
||||
10 unused
|
||||
4c LISTofCRTC crtcs
|
||||
4o LISTofOUTPUT outputs
|
||||
40m LISTofMODEINFO modeinfos
|
||||
b STRING8 mode names
|
||||
p unused, p=pad(b)
|
||||
└───
|
||||
|
||||
RRAddCrtcMode
|
||||
┌───
|
||||
RRGetOutputInfo
|
||||
1 CARD8 major opcode
|
||||
1 0x09 RandR opcode
|
||||
2 12+(b+p)/4 length
|
||||
4 WINDOW window
|
||||
2 CRTC monitor index
|
||||
2 unused
|
||||
36 CRTCMODE mode
|
||||
b STRING mode name
|
||||
p pad(b)
|
||||
|
||||
RRDeleteCrtcMode
|
||||
1 CARD8 major opcode
|
||||
1 0x0a RandR opcode
|
||||
2 3+(b+p)/4 length
|
||||
4 WINDOW window
|
||||
2 CRTC monitor index
|
||||
2 CARD16 mode name length
|
||||
b STRING mode name
|
||||
p pad(b)
|
||||
|
||||
RRSetCrtcConfig
|
||||
|
||||
1 CARD8 major opcode
|
||||
1 0x0b RandR opcode
|
||||
2 7 length
|
||||
4 WINDOW window
|
||||
2 3 length
|
||||
4 OUTPUT output
|
||||
4 TIMESTAMP config-timestamp
|
||||
▶
|
||||
1 1 Reply
|
||||
1 RRCONFIGSTATUS status
|
||||
2 CARD16 sequence number
|
||||
4 c+m+(n+p)/4 reply length
|
||||
4 TIMESTAMP timestamp
|
||||
4 TIMESTAMP config timestamp
|
||||
2 CRTC monitor index
|
||||
4 CRTC current connected crtc
|
||||
1 CONNECTION connection
|
||||
1 unused
|
||||
2 c number of CRTCs
|
||||
2 m number of modes
|
||||
2 n length of name
|
||||
8 unused
|
||||
4c LISTofCRTC crtcs
|
||||
4m LISTofMODE modes
|
||||
n STRING8 name
|
||||
p unused, p=pad(n)
|
||||
└───
|
||||
|
||||
┌───
|
||||
RRCreateMode
|
||||
1 CARD8 major opcode
|
||||
1 0x09 RandR opcode
|
||||
2 12+(n+p)/4 length
|
||||
4 WINDOW window
|
||||
40 MODEINFO mode
|
||||
n STRING8 mode name
|
||||
p unused, p=pad(n)
|
||||
▶
|
||||
1 1 Reply
|
||||
1 unused
|
||||
2 CARD16 sequence number
|
||||
4 0 reply length
|
||||
4 MODE mode
|
||||
20 unused
|
||||
└───
|
||||
┌───
|
||||
RRDestroyMode
|
||||
1 CARD8 major opcode
|
||||
1 0x09 RandR opcode
|
||||
2 2 length
|
||||
4 MODE mode
|
||||
└───
|
||||
┌───
|
||||
RRAddOutputMode
|
||||
1 CARD8 major opcode
|
||||
1 0x09 RandR opcode
|
||||
2 3 length
|
||||
4 OUTPUT output
|
||||
4 MODE mode
|
||||
└───
|
||||
┌───
|
||||
RRDeleteOutputMode
|
||||
1 CARD8 major opcode
|
||||
1 0x09 RandR opcode
|
||||
2 3 length
|
||||
4 OUTPUT output
|
||||
4 MODE mode
|
||||
└───
|
||||
┌───
|
||||
RRGetCrtcInfo
|
||||
1 CARD8 major opcode
|
||||
1 RandR opcode
|
||||
2 3 length
|
||||
4 CRTC crtc
|
||||
4 TIMESTAMP config-timestamp
|
||||
▶
|
||||
1 1 Reply
|
||||
1 RRCONFIGSTATUS status
|
||||
2 CARD16 sequence number
|
||||
4 o+p reply length
|
||||
2 INT16 x
|
||||
2 INT16 y
|
||||
2 MODE mode index
|
||||
2 CARD16 width
|
||||
2 CARD16 height
|
||||
4 MODE mode
|
||||
2 ROTATION current rotation and reflection
|
||||
2 ROTATION set of possible rotations
|
||||
2 o number of outputs
|
||||
2 p number of possible outputs
|
||||
4 unused
|
||||
4o LISTofOUTPUT outputs
|
||||
4p LISTofOUTPUT possible outputs
|
||||
└───
|
||||
┌───
|
||||
RRSetCrtcConfig
|
||||
1 CARD8 major opcode
|
||||
1 RandR opcode
|
||||
2 7+n length
|
||||
4 CRTC crtc
|
||||
4 TIMESTAMP timestamp
|
||||
4 TIMESTAMP config timestamp
|
||||
2 INT16 x
|
||||
2 INT16 y
|
||||
4 MODE mode
|
||||
2 ROTATION rotation/reflection
|
||||
2 unused
|
||||
▶
|
||||
2 n number of outputs
|
||||
4n LISTofOUTPUT outputs
|
||||
▶
|
||||
1 1 Reply
|
||||
1 RRCONFIGSTATUS status
|
||||
2 CARD16 sequence number
|
||||
4 0 reply length
|
||||
4 TIMESTAMP new timestamp
|
||||
4 TIMESTAMP new configuration timestamp
|
||||
4 WINDOW root
|
||||
2 SUBPIXELORDER subpixel order defined in Render
|
||||
2 CRTC monitor
|
||||
8 unused
|
||||
|
||||
2 SUBPIXELORDER subpixel order
|
||||
18 unused
|
||||
└───
|
||||
|
||||
A.3 Protocol Events
|
||||
|
||||
RRScreenChangeNotify
|
||||
|
||||
┌───
|
||||
RRScreenChangeNotify
|
||||
1 Base + 0 code
|
||||
1 ROTATION new rotation and reflection
|
||||
2 CARD16 sequence number
|
||||
|
|
@ -1145,24 +1266,41 @@ A.3 Protocol Events
|
|||
2 CARD16 height in pixels
|
||||
2 CARD16 width in millimeters
|
||||
2 CARD16 height in millimeters
|
||||
└───
|
||||
|
||||
A.3.1 Protocol Events added with version 1.2
|
||||
|
||||
RRCrtcChangeNotify
|
||||
|
||||
┌───
|
||||
RROutputChangeNotify
|
||||
1 Base + 1 code
|
||||
1 0 sub-code
|
||||
2 CARD16 sequence number
|
||||
4 TIMESTAMP timestamp
|
||||
4 TIMESTAMP configuration timestamp
|
||||
4 WINDOW root window
|
||||
4 WINDOW request window
|
||||
2 CRTC monitor index
|
||||
2 MODE mode ID
|
||||
4 OUTPUT output affected
|
||||
4 CRTC crtc in use
|
||||
4 MODE mode in use
|
||||
2 ROTATION rotation in use
|
||||
1 CONNECTION connection status
|
||||
1 SUBPIXELORDER subpixel order
|
||||
└───
|
||||
┌───
|
||||
RRCrtcChangeNotify
|
||||
1 Base + 2 code
|
||||
1 0 sub-code
|
||||
2 CARD16 sequence number
|
||||
4 TIMESTAMP timestamp
|
||||
4 WINDOW request window
|
||||
4 CRTC crtc affected
|
||||
4 MODE mode in use
|
||||
2 ROTATION new rotation and reflection
|
||||
2 SUBPIXELORDER new subpixel order
|
||||
2 INT16 x
|
||||
2 INT16 y
|
||||
2 CARD16 width
|
||||
2 CARD16 height
|
||||
2 unused
|
||||
└───
|
||||
|
||||
Bibliography
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue