proto/randrproto: Branch 'multi-monitor' - 2 commits

Keith Packard keithp at kemper.freedesktop.org
Tue Sep 12 08:19:56 EEST 2006


 randrproto.txt |  615 ++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 346 insertions(+), 269 deletions(-)

New commits:
diff-tree dd19f8fbfcc4b8863347ce422006715ed95a7c00 (from 62decb70de5bbe623859764e7cb492209478e304)
Author: Keith Packard <keithp at neko.keithp.com>
Date:   Mon Sep 11 22:19:28 2006 -0700

    Move supported mode list from CRTC to OUTPUT.

diff --git a/randrproto.txt b/randrproto.txt
index 6c4e2d6..67179f0 100644
--- a/randrproto.txt
+++ b/randrproto.txt
@@ -89,18 +89,18 @@ Additional requests and events are provi
     │   ┃                   ┃        ║                   ║
     │   ┗━━━━━━━━━━━━━━━━━━━┫        ║        C          ║
     └───────────────────────┘        ║                   ║
-    ┌──────┐  ┏━━━━┓  ╔═══════╗      ║                   ║
-    │screen│  ┃CRTC┃  ║monitor║      ╚═══════════════════╝
-    └──────┘  ┗━━━━┛  ╚═══════╝
+    ┌──────┐  ┏━━━━┓  ╔══════╗       ║                   ║
+    │screen│  ┃CRTC┃  ║output║       ╚═══════════════════╝
+    └──────┘  ┗━━━━┛  ╚══════╝
 
 In this picture, the screen is covered (incompletely) by two CRTCs. CRTC1
-is connected to two monitors, A and B. CRTC2 is connected to monitor C.
-Monitors A and B will present exactly the same region of the screen using
-the same mode line. Monitor C will present a different (larger) region of
+is connected to two outputs, A and B. CRTC2 is connected to output C.
+Outputs A and B will present exactly the same region of the screen using
+the same mode line. Output C will present a different (larger) region of
 the screen using a different mode line.
 
-RandR provides information about each available CRTC and monitor; the
-connection between CRTC and monitor is under application control, although
+RandR provides information about each available CRTC and output; the
+connection between CRTC and output is under application control, although
 the hardware will probably impose restrictions on the possible
 configurations. The protocol doesn't try to describe these restrictions,
 instead it provides a mechanism to find out what combinations are supported.
@@ -126,53 +126,51 @@ fully expose what video hardware can do
 
 2. Screen change model
 
-Screens may change dynamically, either under control of this
-extension, or due to external events. Examples include: monitors being
-swapped, you pressing a button to switch from internal display to an
-external monitor on a laptop, or, eventually, the hotplug of a display
-card entirely on busses such as Cardbus which permit hot-swap (which
-will require other work in addition to this extension).
-
-Since the screen configuration is dynamic and asynchronous to the
-client and may change at any time RandR provides mechanisms to ensure
-that your clients view is up to date with the configuration
-possibilities of the moment and enforces applications that wish to
-control the configuration to prove that their information is up to
-date before honoring requests to change the screen configuration (by
-requiring a timestamp on the request).
+Screens may change dynamically, either under control of this extension, or
+due to external events. Examples include: monitors being swapped, pressing a
+button to switch from internal display to an external monitor on a laptop,
+or, eventually, the hotplug of a display card entirely on busses such as
+Cardbus or Express Card which permit hot-swap (which will require other work
+in addition to this extension).
+
+Since the screen configuration is dynamic and asynchronous to the client and
+may change at any time RandR provides mechanisms to ensure that your clients
+view is up to date with the configuration possibilities of the moment and
+enforces applications that wish to control the configuration to prove that
+their information is up to date before honoring requests to change the
+screen configuration (by requiring a timestamp on the request).
 
 Interested applications are notified whenever the screen configuration
-changes, providing the current size of the screen and subpixel order
-(see the Render extension [RENDER]), to enabel proper rendering of
-subpixel decimated client text to continue, along with a time stamp of
-the configuration change. A client must refresh its knowledge of the
-screen configuration before attempting to change the configuration
-after a notification, or the request will fail.
-
-To avoid multiplicative explosion between orientation, reflection
-and sizes, the sizes are only those sizes in the normal (0) rotation.
-
-Rotation and reflection and how they interact can be confusing. In
-Randr, the coordinate system is rotated in a counter-clockwise
-direction relative to the normal orientation. Reflection is along the
-window system coordinate system, not the physical screen X and Y axis,
-so that rotation and reflection do not interact. The other way to
-consider reflection is to is specified in the "normal" orientation,
-before rotation, if you find the other way confusing.
-
-We expect that most clients and toolkits will be oblivious to changes
-to the screen stucture, as they generally use the values in the
-connections Display structure directly. By toolkits updating the
-values on the fly, we believe 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).
+changes, providing the current size of the screen and subpixel order (see
+the Render extension [RENDER]), to enabel proper rendering of subpixel
+decimated client text to continue, along with a time stamp of the
+configuration change. A client must refresh its knowledge of the screen
+configuration before attempting to change the configuration after a
+notification, or the request will fail.
+
+To avoid multiplicative explosion between orientation, reflection and sizes,
+the sizes are only those sizes in the normal (0) rotation.
+
+Rotation and reflection and how they interact can be confusing. In Randr,
+the coordinate system is rotated in a counter-clockwise direction relative
+to the normal orientation. Reflection is along the window system coordinate
+system, not the physical screen X and Y axis, so that rotation and
+reflection do not interact. The other way to consider reflection is to is
+specified in the "normal" orientation, before rotation, if you find the
+other way confusing.
+
+We expect that most clients and toolkits will be oblivious to changes to the
+screen stucture, as they generally use the values in the connections Display
+structure directly. By toolkits updating the values on the fly, we believe
+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.
+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
 
@@ -180,18 +178,17 @@ There are no new error types defined by 
 
 5. Protocol Types
 
-RRCONFIGSTATUS {
-	Success
-	InvalidConfigTime
-	InvalidTime
-	Failed }
-ROTATION {
-	 Rotate_0
-	 Rotate_90
-	 Rotate_180
-	 Rotate_270
-	 Reflect_X
-	 Reflect_Y }
+RRCONFIGSTATUS { Success
+		 InvalidConfigTime
+		 InvalidTime
+		 Failed }
+
+ROTATION { Rotate_0
+	   Rotate_90
+	   Rotate_180
+	   Rotate_270
+	   Reflect_X
+	   Reflect_Y }
 
 RRSELECTMASK { RRScreenChangeNotifyMask
 	       RRCrtcChangeNotifyMask (New in version 1.2)
@@ -199,48 +196,41 @@ RRSELECTMASK { RRScreenChangeNotifyMask
 
 SIZEID { CARD16 }
 
-MODEID { CARD16 or Disabled }
+MODE { XID or None }
 
 CRTC { CARD16 }
 
 OUTPUT { CARD16 }
 
 SUBPIXELORDER { SubPixelUnknown		The subpixel order uses the Render
-	      SubPixelHorizontalRGB	extensions definitions; they are here
-	      SubPixelHorizontalBGR	only for convenience.
-	      SubPixelVerticalRGB
-	      SubPixelVerticalBGR
-	      SubPixelNone }
-
-SCREENSIZE {    
-	widthInPixels, heightInPixels: CARD16
-	widthInMillimeters, heightInMillimeters: CARD16 }
-
-MODEFLAG {
-	hsync_positive hsync_negative
-	vsync_positive vsync_negative
-	interlace double_scan
-	csync csync_positive csync_negative
-	hskew_present
-	bcast
-	pixel_multiplex
-	double_clock
-	clock_divide_by_2
-}
+	        SubPixelHorizontalRGB	extensions definitions; they are here
+	        SubPixelHorizontalBGR	only for convenience.
+	        SubPixelVerticalRGB
+	        SubPixelVerticalBGR
+	        SubPixelNone }
+
+SCREENSIZE { widthInPixels, heightInPixels: CARD16
+	     widthInMillimeters, heightInMillimeters: CARD16 }
+
+MODEFLAG { hsync_positive hsync_negative
+	   vsync_positive vsync_negative
+	   interlace double_scan
+	   csync csync_positive csync_negative
+	   hskew_present
+	   bcast
+	   pixel_multiplex
+	   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 }
 
-CRTCMODE {
-	name: STRING
-	widthInPixels, heightInPixels: CARD16
-	widthInMillimeters, heightInMillimeters: CARD32
-	dotClock: CARD32
-	hSyncStart, hSyncEnd, hTotal, hSkew: CARD16
-	vSyncStart, vSyncEnd, vTotal: CARD16
-	modeFlags: SETofMODEFLAG
-	possible-outputs: LISTofLISTofOUTPUT
-}
-
-REFRESH {
-	rates: LISTofCARD16 }
+REFRESH { rates: LISTofCARD16 }
 
 6. Extension Initialization
 
@@ -249,7 +239,9 @@ The name of this extension is "RANDR".
 RRQueryVersion
 	client-major-version:	CARD32
 	client-minor-version:	CARD32
-	->
+	
+	â–¶
+	
 	major-version:		CARD32
 	minor-version:		CARD32
 
@@ -300,7 +292,7 @@ RRSetScreenConfig
 	rotation: ROTATION
 	rate: CARD16
 
-	->
+	â–¶
 
 	status: RRCONFIGSTATUS
 	new-timestamp: TIMESTAMP
@@ -353,7 +345,7 @@ RRSetScreenConfig
 RRGetScreenInfo
 	window: WINDOW
 
-	->	
+	â–¶	
 
 	rotations: SETofROTATION
 	root: WINDOW
@@ -406,17 +398,17 @@ RRGetScreenInfo
 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
-from the monitor configuration, permitting the subset of the screen
-presented by multiple monitors to be configured. As a separate notion, the
+from the crtc and output configuration, permitting the subset of the screen
+presented by multiple outputs to be configured. As a separate notion, the
 size of the screen itself may be arbitrarily configured within a defined
-range. As monitors are added and removed from the system, the set returned
-by RRGetMonitorModes will change so that applications can detect dynamic
-changes in the monitor environment.
+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
 	window: WINDOW
 
-	->
+	â–¶
 
 	CARD16	minWidth, minHeight
 	CARD16	maxWidth, maxHeight
@@ -445,20 +437,47 @@ RRSetScreenSize
 	extension and the core protocol. They must be non-zero, or Value
 	error results.
 
-RRGetCrtcModes
+RRGetScreenResources
 	window: WINDOW
-	crtc-index: CRTC
 
-	->
+	â–¶
 
 	timestamp: TIMESTAMP
 	config-timestamp: TIMESTAMP
+	number-of-crtcs: CARD16
+	number-of-outputs: CARD16
+
+	Errors: Window
+
+RRGetOutputInfo
+	window: WINDOW
+	output: OUTPUT
+
+	â–¶
+
+	timestamp: TIMESTAMP
+	config-timestamp: TIMESTAMP
+	name: STRING
+	crtc: CRTC
+	crtcs: LISTofCRTC
+	clones: LISTofOUTPUT
+	modes: LISTofOUTPUTMODE
+
+RRGetCrtcInfo
+	window: WINDOW
+	crtc: CRTC
+
+	â–¶
+
+	timestamp: TIMESTAMP
 	x, y: INT16
-	mode: MODEID
+	mode: MODE
 	rotation: ROTATION
+	
+	config-timestamp: TIMESTAMP
 	rotations: SETofROTATION
-	default-mode: MODEID
-	modes: LISTofCRTCMODE
+	default-mode: MODE
+	outputs: LISTofOUTPUT
 
 	Errors: Window
 
@@ -468,12 +487,6 @@ RRGetCrtcModes
 
 	'timestamp' indicates when the configuration was last set.
 	
-	'config-timestamp' indicates when the screen configuration
-	information last changed: requests to set the screen 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. 
-	
 	'x' and 'y' indicate the position of this CRTC within the screen
 	region. They will be set to 0 when the CRTC is disabled.
 	
@@ -484,70 +497,68 @@ RRGetCrtcModes
 	'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. 
+	
 	'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.
 
-	'modes' is the list of possible displayed modes. Within each mode,
-	the sizes are reported for rotation set to Rotate_0.
-
-RRGetOutputs
+RRAddOutputMode
 	window: WINDOW
-	
-RRAddCrtcMode
-	window: WINDOW
-	crtc-index: CRTC
-	mode: CRTCMODE
+	output: OUTPUT
+	mode: OUTPUTMODE
 	config-timestamp: TIMESTAMP
 	timestamp: TIMESTAMP
 	
-	->
+	â–¶
 
 	Errors: Window, Value, Match, Name
 
-	'window' and 'crtc-index' indicate which CRTC is to be
-	configured. If 'crtc-index' is out of range, a Value error is
-	returned.
+	'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 CRTC. If the name of 'mode'
+	'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 CRTC, a Match error is returned. If
-	some parameter of the mode is not valid in some other way, a Value
-	error is returned.
+	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 CrtcChangeNotify events.
+	This request generates OutputChangeNotify events.
 
-RRDeleteCrtcMode
+RRDeleteOutputMode
 	window: WINDOW
-	crtc-index: CRTC
+	output: OUTPUT
 	name: STRING
 
-	->
+	â–¶
 
 	Errors: Window, Value, Name
 
-	'window' and 'crtc-index' indicate which CRTC is to be
-	configured. If 'crtc-index' is out of range, a Value error is
-	returned.
+	'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 RRAddCrtcMode, else an Access error is returned.
-	The named mode must not be active, else a Match error is returned.
+	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
-	crtc-index: CRTC
+	crtc: CRTC
 	timestamp: TIMESTAMP
 	config-timestamp: TIMESTAMP
 	x, y: INT16
-	mode: MODEID
+	mode: MODE
 	rotation: ROTATION
 	outputs: LISTofOUTPUT
 
-	->
+	â–¶
 
 	status: RRCONFIGSTATUS
 	new-timestamp: TIMESTAMP
@@ -574,9 +585,10 @@ RRSetCrtcConfig
 	monitor's content. 'x' and 'y' must be within the screen size, else
 	a Value error results.
 
-	'mode' contains the index of desired mode or Disabled indicating the
-	monitor should be disabled. If 'mode' is not one of these values, a
-	Value error results.
+	'mode' is either the desired mode or None indicating the CRTC should
+	be disabled. If 'mode' is not one of these values, a Value
+	error results. 'mode' must be valid for all of the configured outputs,
+	else a Match error.
 
 	'rotation' contains the desired rotation along with which
 	reflections should be enabled. The rotation and reflection values
@@ -585,19 +597,23 @@ RRSetCrtcConfig
 
 	'outputs' contains the set of outputs that this CRTC should be
 	connected to. The set must be among the list of acceptable output
-	sets for this CRTC or a Match error results.
+	sets for this CRTC or a Match error results. 
+	
+	If 'mode' is None, then 'outputs' must be empty, else a Match error
+	results. Conversly, if 'mode' is not None, then 'outputs' must not be
+	empty, else a Match error results.
 	
 	This request may fail for other indeterminate reasons, in which case
 	'status' will be set to Failed and no configuration change will be
 	made.
 	
-	This request sets the monitor to the specified position, mode,
-	rotation and reflection. The entire area of the monitor must fit
-	within the screen size, else a Match error results. As an example,
-	rotating the screen so that a single monitor fills the entire screen
-	before and after may necessitate disabling the monitor, resizing the
-	screen, then re-enabling the monitor at the new configuration to
-	avoid an invalid intermediate configuration.
+	This request sets the CRTC to the specified position, mode, rotation
+	and reflection. The entire area of the CRTC must fit within the
+	screen size, else a Match error results. As an example, rotating the
+	screen so that a single CRTC fills the entire screen before and
+	after may necessitate disabling the CRTC, resizing the screen,
+	then re-enabling the CRTC at the new configuration to avoid an
+	invalid intermediate configuration.
 
 	When this request succeeds, 'status' contains Success and the
 	requested changes to configuration will have been made.
@@ -633,7 +649,7 @@ RRScreenChangeNotify
 	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 size
 	subpixelOrder: SUBPIXELORDER	order of subpixels
 	widthInPixels: CARD16
 	heightInPixels: CARD16
@@ -666,15 +682,30 @@ RRScreenChangeNotify
 
 8.1 Events added in version 1.2 of the RandR extension
 
+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 which changed
+
+	This event is generated whenever the available output configurations
+	have changed and is sent to requesting clients. 'timestamp'
+	indicates when the crtc configuration was changed by a client.
+	'config-timestamp' says when the last time the available
+	configurations changed. 'root' is the root of the screen the change
+	occurred on, 'window' is window selecting for this event.
+
 RRCrtcChangeNotify
 
-	sequenceNumber: CARD16		low 16 bits of request's seq. number
+	sequence-number: CARD16		low 16 bits of request's seq. number
 	timestamp: TIMESTAMP		time monitor was changed
-	configTimestamp: TIMESTAMP	time config data was changed
+	config-timestamp: TIMESTAMP	time config data was changed
 	root: WINDOW			root window of screen
 	window: WINDOW			window requesting notification
 	crtc-index: CRTC		monitor which changed
-	mode: MODEID			new mode
+	mode: MODE			new mode
 	rotation: ROTATION;		new rotation
 	subpixelOrder: SUBPIXELORDER	order of subpixels
 	x: INT16			x position of monitor within screen
@@ -682,7 +713,7 @@ RRCrtcChangeNotify
 
 	This event is generated whenever the monitor configuration is changed
 	and sent to requesting clients. 'timestamp' indicates when the
-	monitor configuration was changed. 'configTimestamp' says when the
+	monitor 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. 'size-id' contains the index of the current size.
@@ -845,7 +876,7 @@ errors if used in version 1.0.
 	2	3			length
 	4	CARD32			major version
 	4	CARD32			minor version
-	->
+	â–¶
 	1	1			Reply
         1				unused
 	2	CARD16			sequence number
@@ -866,7 +897,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
@@ -896,7 +927,7 @@ errors if used in version 1.0.
 	1	0x05			RandR opcode
 	2	2			length
 	4	WINDOW			window
-	->
+	â–¶
 	1	1			Reply
 	1	CARD8			set of Rotations
 	2	CARD16			sequence number
@@ -929,7 +960,7 @@ A.2.1 Protocol Requests added with versi
 	1	0x06			RandR opcode
 	2	2			length
 	4	WINDOW			window
-	->
+	â–¶
 	1	1			Reply
 	1				unused
 	2	CARD16			sequence number
@@ -962,7 +993,7 @@ A.2.1 Protocol Requests added with versi
 	1	0x08			RandR opcode
 	2	2			length
 	4	WINDOW			window
-	->
+	â–¶
 	1	1			Reply
 	1				unused
 	2	CARD16			sequence number
@@ -983,8 +1014,8 @@ A.2.1 Protocol Requests added with versi
 	2	INT16			x
 	2	INT16			y
 	2	ROTATION		rotation
-	2	MODEID			mode
-	2	MODEID			default mode
+	2	MODE			mode
+	2	MODE			default mode
 	2	SETofROTATION		rotations
 	2	CARD16			start offset in LISTofCRTCMODE
 	2	CARD16			number of CRTCMODE
@@ -1021,10 +1052,10 @@ A.2.1 Protocol Requests added with versi
 	2	CRTC			monitor index
 	2	INT16			x
 	2	INT16			y
-	2	MODEID			mode index
+	2	MODE			mode index
 	2	ROTATION		rotation/reflection
 	2				unused
-	->
+	â–¶
 	1	1			Reply
 	1	RRCONFIGSTATUS		status
 	2	CARD16			sequence number
@@ -1067,7 +1098,7 @@ A.3.1 Protocol Events added with version
 	4	WINDOW			root window
 	4	WINDOW			request window
 	2	CRTC			monitor index
-	2	MODEID			mode ID
+	2	MODE			mode ID
 	2	ROTATION		new rotation and reflection
 	2	SUBPIXELORDER		new subpixel order
 	2	INT16			x
diff-tree 62decb70de5bbe623859764e7cb492209478e304 (from 5220e7d7dfa64d95918b6f5ad52089fe87540b61)
Author: Keith Packard <keithp at neko.keithp.com>
Date:   Mon Sep 11 21:29:39 2006 -0700

    Start rework for screen/CRTC/monitor scheme.

diff --git a/randrproto.txt b/randrproto.txt
index 5508e62..6c4e2d6 100644
--- a/randrproto.txt
+++ b/randrproto.txt
@@ -1,23 +1,23 @@
-	The X Resize, Rotate and Reflect Extension
-		     Version 1.2
-		       2006-4-13
-
-		      Jim Gettys
-	          Jim.Gettys at hp.com
-	     Cambridge Research Laboratory
-		        HP Labs
-	        Hewlett Packard Company
-
-	             Keith Packard
-	         keith.packard at intel.com
-	      Open Source Technology Center
-		   Intel Corporation
+         The X Resize, Rotate and Reflect Extension
+                        Version 1.2
+                         2006-4-13
+
+                        Jim Gettys
+                     Jim.Gettys at hp.com
+               Cambridge Research Laboratory
+                          HP Labs
+                  Hewlett Packard Company
+
+                       Keith Packard
+                  keith.packard at intel.com
+               Open Source Technology Center
+                     Intel Corporation
 
 1. Introduction
 
 The X Resize, Rotate and Reflect Extension, called RandR for short,
 brings the ability to resize, rotate and reflect the root window of a
-screen.  It is based on the X Resize and Rotate Extension as specified
+screen. It is based on the X Resize and Rotate Extension as specified
 in the Proceedings of the 2001 Usenix Technical Conference [RANDR].
 
 RandR as implemented and integrated into the X server differs in
@@ -28,14 +28,14 @@ document and in the implementation has b
 protocol described here, as it has been overtaken by events.
 
 These events include:
-      o Modern toolkits (in this case, GTK+ 2.x) have progressed to the point
+      â–º Modern toolkits (in this case, GTK+ 2.x) have progressed to the point
         of implementing migration between screens of arbitrary depths
-      o The continued advance of Moore's law has made limited amounts of VRAM
+      â–º The continued advance of Moore's law has made limited amounts of VRAM
         less of an issue, reducing the pressure to implement depth switching
 	on laptops or desktop systems
-      o The continued decline of legacy toolkits whose design would have
+      â–º The continued decline of legacy toolkits whose design would have
         required depth switching to support migration
-      o The lack of depth switchin implementation experience in the 
+      â–º The lack of depth switchin implementation experience in the 
         intervening time, due to events beyond our control
 
 Additionally, the requirement to support depth switching might
@@ -46,9 +46,9 @@ Rather than further delaying RandR's wid
 long wanted by the community (resizing of screens, particularly on laptops),
 or the deployment of a protocol design that might be flawed due to lack of
 implementation experience, we decided to remove depth switching from the
-protocol.  It may be implementated at a later time if resources and
+protocol. It may be implementated at a later time if resources and
 interests permit as a revision to the protocol described here, which will
-remain a stable base for applications.  The protocol described here has been
+remain a stable base for applications. The protocol described here has been
 implemented in the main X.org server, and more fully in the hw/kdrive
 implementation in the distribution, which fully implements resizing,
 rotation and reflection.
@@ -58,25 +58,58 @@ rotation and reflection.
 One of the significant limitations found in version 1.1 of the RandR
 protocol was the inability to deal with the Xinerama model where multiple
 monitors display portions of a common underlying screen. In this environment,
-the size of the 'porthole' shown by each monitor is independent of the
-overall size of the screen, and the porthole may be located anywhere within
-the screen.
+zero or more video outputs are associated with each CRT controller which
+defines both a set of video timings and a 'viewport' within the larger
+screen. This viewport is independent of the overall size of the screen, and
+may be located anywhere within the screen. 
 
 The effect is to decouple the reported size of the screen from the size
-presented by each monitor, and to permit multiple monitors to present
+presented by each video output, and to permit multiple outputs to present
 information for a single screen.
 
-To extend RandR for this model, we separate out the monitor and screen
+To extend RandR for this model, we separate out the output, CRTC and screen
 configuration information and permit them to be configured separately. For
 compatibility with the 1.1 version of the protocol, we make the 1.1 requests
-simultaneously affect both the screen and the (presumably sole) monitor.
-Monitor configuration is now done with full mode information instead of just
-size and refresh rate, and these modes have names. These names should use
-UTF-8 encoding, but there isn't any enforcement in the specification.
-New modes may also be added by the user.
+simultaneously affect both the screen and the (presumably sole) CRTC and
+output. The set of available outputs are presented with UTF-8 encoded names
+and may be connected to CRTCs as permitted by the underlying hardware. CRTC
+configuration is now done with full mode information instead of just size
+and refresh rate, and these modes have names. These names also use UTF-8
+encoding. New modes may also be added by the user.
 
 Additional requests and events are provided for this new functionality.
 
+       ┌────────────────────────────────┬──────────┐
+    ┏━━━━━━━┳───────────────┐       ╔════════╗ ╔════════╗
+    ┃   1   ┃               │       ║   A    ║ ║   B    ║
+    ┃   ┏━━━╋━━━━━━━━━━━━━━━┫       ║        ║ ║        ║
+    ┣━━━╋━━━┛               ┃       ╚════════╝ ╚════════╝
+    │   ┃         2         ┃─────────────────┐
+    │   ┃                   ┃        ╔═══════════════════╗ 
+    │   ┃                   ┃        ║                   ║
+    │   ┗━━━━━━━━━━━━━━━━━━━┫        ║        C          ║
+    └───────────────────────┘        ║                   ║
+    ┌──────┐  ┏━━━━┓  ╔═══════╗      ║                   ║
+    │screen│  ┃CRTC┃  ║monitor║      ╚═══════════════════╝
+    └──────┘  ┗━━━━┛  ╚═══════╝
+
+In this picture, the screen is covered (incompletely) by two CRTCs. CRTC1
+is connected to two monitors, A and B. CRTC2 is connected to monitor C.
+Monitors A and B will present exactly the same region of the screen using
+the same mode line. Monitor C will present a different (larger) region of
+the screen using a different mode line.
+
+RandR provides information about each available CRTC and monitor; the
+connection between CRTC and monitor is under application control, although
+the hardware will probably impose restrictions on the possible
+configurations. The protocol doesn't try to describe these restrictions,
+instead it provides a mechanism to find out what combinations are supported.
+
+For instance, dual-link DVI gangs two CRTC outputs togther to provide higher
+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
 
 Our thanks to the contributors to the design found on the xpert mailing
@@ -88,6 +121,8 @@ Andy Ritger for early questions about ho
 Carl Worth for editing the specification and Usenix paper
 David Dawes for XFree86 DDX integration work
 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
 
@@ -110,24 +145,24 @@ Interested applications are notified whe
 changes, providing the current size of the screen and subpixel order
 (see the Render extension [RENDER]), to enabel proper rendering of
 subpixel decimated client text to continue, along with a time stamp of
-the configuration change.  A client must refresh its knowledge of the
+the configuration change. A client must refresh its knowledge of the
 screen configuration before attempting to change the configuration
 after a notification, or the request will fail.
 
 To avoid multiplicative explosion between orientation, reflection
 and sizes, the sizes are only those sizes in the normal (0) rotation.
 
-Rotation and reflection and how they interact can be confusing.  In
+Rotation and reflection and how they interact can be confusing. In
 Randr, the coordinate system is rotated in a counter-clockwise
-direction relative to the normal orientation.  Reflection is along the
+direction relative to the normal orientation. Reflection is along the
 window system coordinate system, not the physical screen X and Y axis,
-so that rotation and reflection do not interact.  The other way to
+so that rotation and reflection do not interact. The other way to
 consider reflection is to is specified in the "normal" orientation,
 before rotation, if you find the other way confusing.
 
 We expect that most clients and toolkits will be oblivious to changes
 to the screen stucture, as they generally use the values in the
-connections Display structure directly.  By toolkits updating the
+connections Display structure directly. By toolkits updating the
 values on the fly, we believe 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
@@ -136,7 +171,7 @@ 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,
+documented there. The only datatype defined is the screen size,
 defined in the normal (0 degree) orientation.
 
 4. Errors
@@ -159,13 +194,16 @@ ROTATION {
 	 Reflect_Y }
 
 RRSELECTMASK { RRScreenChangeNotifyMask
-	       RRMonitorChangeNotifyMask (New in version 1.2) }
+	       RRCrtcChangeNotifyMask (New in version 1.2)
+	       RROutputChangeNotifyMask (New in version 1.2) }
 
 SIZEID { CARD16 }
 
 MODEID { CARD16 or Disabled }
 
-MONITOR { CARD16 }
+CRTC { CARD16 }
+
+OUTPUT { CARD16 }
 
 SUBPIXELORDER { SubPixelUnknown		The subpixel order uses the Render
 	      SubPixelHorizontalRGB	extensions definitions; they are here
@@ -178,7 +216,6 @@ SCREENSIZE {    
 	widthInPixels, heightInPixels: CARD16
 	widthInMillimeters, heightInMillimeters: CARD16 }
 
-
 MODEFLAG {
 	hsync_positive hsync_negative
 	vsync_positive vsync_negative
@@ -191,7 +228,7 @@ MODEFLAG {
 	clock_divide_by_2
 }
 
-MONITORMODE {
+CRTCMODE {
 	name: STRING
 	widthInPixels, heightInPixels: CARD16
 	widthInMillimeters, heightInMillimeters: CARD32
@@ -199,6 +236,7 @@ MONITORMODE {
 	hSyncStart, hSyncEnd, hTotal, hSkew: CARD16
 	vSyncStart, vSyncEnd, vTotal: CARD16
 	modeFlags: SETofMODEFLAG
+	possible-outputs: LISTofLISTofOUTPUT
 }
 
 REFRESH {
@@ -217,7 +255,7 @@ RRQueryVersion
 
 	The client sends the highest supported version to the server
 	and the server sends the highest version it supports, but no
-	higher than the requested version.  Major versions changes can
+	higher than the requested version. Major versions changes can
 	introduce incompatibilities in existing functionality, minor
 	version changes introduce only backward compatible changes.
 	It is the clients responsibility to ensure that the server
@@ -238,14 +276,22 @@ RRSelectInput
 	this request executes if the screen configuration has changed since
 	the client connected, to avoid race conditions.
 
-	New for version 1.2 - if 'enable' contains RRMonitorChangeMask,
-	RRMonitorChangeNotify events will be sent when a the configuration
-	for a monitor associated with the screen changes, either through
-	this protocol extension or due to detected external monitor changes.
-	RRMonitorChangeNotify may also be sent when this request executes if
-	the monitor configuration has changed since the client connected, to
-	avoid race conditions.
-
+	New for version 1.2:
+	
+	If 'enable' contains RRCrtcChangeMask, RRCrtcChangeNotify events
+	will be sent when a the configuration for a CRTC associated with the
+	screen changes, either through this protocol extension or due to
+	detected external changes. RRCrtcChangeNotify may also be sent when
+	this request executes if the CRTC configuration has changed since
+	the client connected, to avoid race conditions. 
+	
+	If 'enable' contains RROutputChangeMask, RROutputChangeNotify events
+	will be sent when a the configuration for an output associated with
+	the screen changes, either through this protocol extension or due to
+	detected external changes. RROutputChangeNotify may also be sent
+	when this request executes if the output configuration has changed
+	since the client connected, to avoid race conditions. 
+	
 RRSetScreenConfig
 	window: WINDOW
 	timestamp: TIMESTAMP
@@ -270,7 +316,7 @@ RRSetScreenConfig
 	
 	If 'config-timestamp' is not equal to when the server's screen
 	configurations last changed, the request is ignored and
-	InvalidConfigTime returned in status.  This could occur if the
+	InvalidConfigTime returned in status. This could occur if the
 	screen changed since you last made a RRGetScreenInfo request,
 	perhaps by a different piece of display hardware being installed.
 	Rather than allowing an incorrect call to be executed based on stale
@@ -341,7 +387,7 @@ RRGetScreenInfo
 	
 	'size-id' indicates which size is active.
 
-	'rate' is the current refresh rate.  This is zero when the refresh
+	'rate' is the current refresh rate. This is zero when the refresh
 	rate is unknown or on devices for which refresh is not relevant.
 
 	'sizes' is the list of possible frame buffer sizes (at the normal
@@ -349,7 +395,7 @@ RRGetScreenInfo
 	the screen and the pixel size.
 
 	'refresh' is the list of refresh rates for each size. Each element
-	of 'sizes' has a cooresponding element in 'refresh'.  An empty list
+	of 'sizes' has a cooresponding element in 'refresh'. An empty list
 	indicates no known rates, or a device for which refresh is not
 	relevant.
 
@@ -399,35 +445,27 @@ RRSetScreenSize
 	extension and the core protocol. They must be non-zero, or Value
 	error results.
 
-RRGetMonitorModes
+RRGetCrtcModes
 	window: WINDOW
+	crtc-index: CRTC
 
 	->
 
-	root: WINDOW
-	monitors: LISTofMONITORINFO
-
-	where:
-
-	MONITORINFO {
-		timestamp: TIMESTAMP
-		config-timestamp: TIMESTAMP
-		x, y: INT16
-		mode: MODEID
-		rotation: ROTATION
-		rotations: SETofROTATION
-		default-mode: MODEID
-		modes: LISTofMONITORMODE
-	}
+	timestamp: TIMESTAMP
+	config-timestamp: TIMESTAMP
+	x, y: INT16
+	mode: MODEID
+	rotation: ROTATION
+	rotations: SETofROTATION
+	default-mode: MODEID
+	modes: LISTofCRTCMODE
 
 	Errors: Window
 
-	RRGetMonitorModes returns information about the current and available
-	configurations for all monitors connected to the screen associated
-	with 'window'.
+	RRGetCrtcModes returns information about the current and available
+	configurations for the specified crtc connected to the screen
+	associated with 'window'.
 
-	'root' is the root window of the screen.
-	
 	'timestamp' indicates when the configuration was last set.
 	
 	'config-timestamp' indicates when the screen configuration
@@ -436,29 +474,32 @@ RRGetMonitorModes
 	is using is up to date, to ensure clients can be well behaved
 	in the face of race conditions. 
 	
-	'x' and 'y' indicate the position of this monitor within the screen
-	region. They will be set to 0 when the monitor is disabled.
+	'x' and 'y' indicate the position of this CRTC within the screen
+	region. They will be set to 0 when the CRTC is disabled.
 	
-	'mode' indicates which mode is active, or 'Disabled' indicating
-	that the monitor has been disabled and is not displaying the screen
+	'mode' indicates which mode is active, or Disabled 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 monitor is disabled.
+	when the CRTC is disabled.
 	
 	'rotations' contains the set of rotations and reflections supported
-	by the monitor.
+	by the CRTC.
 
-	'default-mode' is the mode the monitor is set to at server
+	'default-mode' is the mode the CRTC is set to at server
 	reset time.
 
 	'modes' is the list of possible displayed modes. Within each mode,
 	the sizes are reported for rotation set to Rotate_0.
 
-RRAddMonitorMode
+RRGetOutputs
 	window: WINDOW
-	monitor-index: MONITOR
-	mode: MONITORMODE
+	
+RRAddCrtcMode
+	window: WINDOW
+	crtc-index: CRTC
+	mode: CRTCMODE
 	config-timestamp: TIMESTAMP
 	timestamp: TIMESTAMP
 	
@@ -466,44 +507,45 @@ RRAddMonitorMode
 
 	Errors: Window, Value, Match, Name
 
-	'window' and 'monitor-index' indicate which monitor is to be
-	configured. If 'monitor-index' is out of range, a Value error is
+	'window' and 'crtc-index' indicate which CRTC is to be
+	configured. If 'crtc-index' is out of range, a Value error is
 	returned.
 
-	'mode' provides a new mode for the monitor.  If the name of 'mode'
+	'mode' provides a new mode for the CRTC. If the name of 'mode'
 	names an existing mode, a Name error is returned. If 'mode' cannot be
-	supported by the specified monitor, a Match error is returned. If
+	supported by the specified CRTC, 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 MonitorChangeNotify events.
+	This request generates CrtcChangeNotify events.
 
-RRDeleteMonitorMode
+RRDeleteCrtcMode
 	window: WINDOW
-	monitor-index: MONITOR
+	crtc-index: CRTC
 	name: STRING
 
 	->
 
 	Errors: Window, Value, Name
 
-	'window' and 'monitor-index' indicate which monitor is to be
-	configured. If 'monitor-index' is out of range, a Value error is
+	'window' and 'crtc-index' indicate which CRTC is to be
+	configured. If 'crtc-index' 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 RRAddMonitorMode, else an Access error is returned.
+	been added with RRAddCrtcMode, else an Access error is returned.
 	The named mode must not be active, else a Match error is returned.
 
-RRSetMonitorMode
+RRSetCrtcConfig
 	window: WINDOW
-	monitor-index: MONITOR
+	crtc-index: CRTC
 	timestamp: TIMESTAMP
 	config-timestamp: TIMESTAMP
 	x, y: INT16
 	mode: MODEID
 	rotation: ROTATION
+	outputs: LISTofOUTPUT
 
 	->
 
@@ -511,7 +553,7 @@ RRSetMonitorMode
 	new-timestamp: TIMESTAMP
 	config-timestamp: TIMESTAMP
 	root: WINDOW
-	monitor: MONITOR
+	monitor: CRTC
 	subpixelOrder: SUBPIXELORDER
 
 	Errors: Value, Match
@@ -522,7 +564,7 @@ RRSetMonitorMode
 	
 	If 'config-timestamp' is not equal to when the monitor's
 	configuration last changed, the request is ignored and
-	InvalidConfigTime returned in status.  This could occur if the
+	InvalidConfigTime returned in status. This could occur if the
 	monitor changed since you last made a RRGetScreenInfo request,
 	perhaps by a different monitor being connected to the machine.
 	Rather than allowing an incorrect call to be executed based on stale
@@ -541,6 +583,10 @@ RRSetMonitorMode
 	must be among those allowed for this monitor, else a Value error
 	results.
 
+	'outputs' contains the set of outputs that this CRTC should be
+	connected to. The set must be among the list of acceptable output
+	sets for this CRTC or a Match error results.
+	
 	This request may fail for other indeterminate reasons, in which case
 	'status' will be set to Failed and no configuration change will be
 	made.
@@ -571,7 +617,7 @@ RRSetMonitorMode
 8. Extension Events
 
 Clients MAY select for ConfigureNotify on the root window to be
-informed of screen changes.  This may be advantageous if all your
+informed of screen changes. This may be advantageous if all your
 clients need to know is the size of the root window, as it avoids
 round trips to set up the extension.
 
@@ -596,14 +642,14 @@ RRScreenChangeNotify
 
 	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
+	screen configuration was changed. 'configTimestamp' 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. 'size-id' contains the index of the current size.
 
 	This event is sent whenever the screen's configuration changes
 	or if a new screen configuration becomes available that was
-	not available in the past.  In this case (config-timestamp in
+	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 RRGetScreenInfo), the client MUST call
 	RRGetScreenInfo to update its view of possible screen
@@ -613,21 +659,21 @@ RRScreenChangeNotify
 	Clients which select screen change notification events may be
 	sent an event immediately if the screen configuration was
 	changed between when they connected to the X server and
-	selected for notification.  This is to prevent a common race
+	selected for notification. This is to prevent a common race
 	that might occur on log-in, where many applications start up
 	just at the time when a display manager or log in script might
 	be changing the screen size or configuration.
 
 8.1 Events added in version 1.2 of the RandR extension
 
-RRMonitorChangeNotify
+RRCrtcChangeNotify
 
 	sequenceNumber: CARD16		low 16 bits of request's seq. number
 	timestamp: TIMESTAMP		time monitor was changed
 	configTimestamp: TIMESTAMP	time config data was changed
 	root: WINDOW			root window of screen
 	window: WINDOW			window requesting notification
-	monitor-index: MONITOR		monitor which changed
+	crtc-index: CRTC		monitor which changed
 	mode: MODEID			new mode
 	rotation: ROTATION;		new rotation
 	subpixelOrder: SUBPIXELORDER	order of subpixels
@@ -636,24 +682,24 @@ RRMonitorChangeNotify
 
 	This event is generated whenever the monitor configuration is changed
 	and sent to requesting clients. 'timestamp' indicates when the
-	monitor configuration was changed.  'configTimestamp' says when the
+	monitor configuration was changed. 'configTimestamp' 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. 'size-id' contains the index of the current size.
 
 	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
+	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 RRGetMonitorModes), the client MUST call
-	RRGetMonitorModes to update its view of possible monitor
+	the last call to RRGetCrtcModes), the client MUST call
+	RRGetCrtcModes to update its view of possible monitor
 	configurations to have a correct view of possible monitor
 	organizations.
 
 	Clients which select monitor change notification events may be
 	sent an event immediately if the monitor configuration was
 	changed between when they connected to the X server and
-	selected for notification.  This is to prevent a common race
+	selected for notification. This is to prevent a common race
 	that might occur on log-in, where many applications start up
 	just at the time when a display manager or log in script might
 	be changing the monitor size or configuration.
@@ -661,22 +707,22 @@ RRMonitorChangeNotify
 9. Extension Versioning
 
 The RandR extension was developed in parallel with the implementation
-to ensure the feasibility of various portions of the design.  As
+to ensure the feasibility of various portions of the design. As
 portions of the extension are implemented, the version number of the
 extension has changed to reflect the portions of the standard provied.
 This document describes the version 1.0 of the specification, the
-partial implementations have version numbers less than that.  Here's a
+partial implementations have version numbers less than that. Here's a
 list of what each version before 1.0 implemented:
 
 	0.0: This prototype implemented resize and rotation in the
 	     TinyX server Used approximately the protocol described in
-	     the Usenix paper.  Appeared in the TinyX server in
+	     the Usenix paper. Appeared in the TinyX server in
 	     XFree86 4.2, but not in the XFree86 main server.
 
 	0.1: Added subpixel order, added an event for subpixel order.
 	     This version was never checked in to XFree86 CVS.
 
-	1.0: Implements resize, rotation, and reflection.  Implemented
+	1.0: Implements resize, rotation, and reflection. Implemented
 	     both in the XFree86 main server (size change only at this
 	     date), and fully (size change, rotation, and reflection)
 	     in XFree86's TinyX server.
@@ -686,10 +732,10 @@ list of what each version before 1.0 imp
 	1.2: Separate out screens from monitors, 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
+will fail against 1.0 servers. The wire encoding op-codes were
 changed for GetScreenInfo to ensure this failure in a relatively
-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
+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
@@ -750,7 +796,7 @@ A.1 Common Types
 
 	RRSELECTMASK
 	0x0001	ScreenChangeNotifyMask
-	0x0002	MonitorChangeNotifyMask		Added in version 1.2
+	0x0002	CrtcChangeNotifyMask		Added in version 1.2
 
 	RRCONFIGSTATUS
 	0x0 Success
@@ -761,7 +807,7 @@ A.1 Common Types
 	SIZEID
 	0xffff	Disabled
 
-	MONITORMODE (36)			Added in version 1.2
+	CRTCMODE (36)			Added in version 1.2
 	2	CARD16		width in pixels
 	2	CARD16		height in pixels
 	4	CARD32		width in millimeters
@@ -910,7 +956,7 @@ A.2.1 Protocol Requests added with versi
 	4	CARD32			height in millimeters
 	
 
-	RRGetMonitorModes
+	RRGetCrtcInfo
 	
 	1	CARD8			major opcode
 	1	0x08			RandR opcode
@@ -922,16 +968,16 @@ A.2.1 Protocol Requests added with versi
 	2	CARD16			sequence number
 	4	i*6 + m*9 + (b+p)/4	reply length
 	4	WINDOW			root
-	2	CARD16			i = number of MONITORINFO following
-	2	CARD16			m = number of SIZE following
+	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	LISTofMONITORINFO	one per monitor
-	m*36	LISTofMONITORMODE	for all monitors
-	b	LISTofCARD*		list of mode names
+	i*24	LISTofCRTCINFO	one per monitor
+	m*36	LISTofCRTCMODE	for all monitors
+	b	LISTofCARD8		list of mode names
 	p	pad			pad(b)
 
-	MONITORINFO
+	CRTCINFO
 	4	TIMESTAMP		timestamp
 	4	TIMESTAMP		config-timestamp
 	2	INT16			x
@@ -940,31 +986,31 @@ A.2.1 Protocol Requests added with versi
 	2	MODEID			mode
 	2	MODEID			default mode
 	2	SETofROTATION		rotations
-	2	CARD16			start offset in LISTofMONITORMODE
-	2	CARD16			number of MONITORMODE
+	2	CARD16			start offset in LISTofCRTCMODE
+	2	CARD16			number of CRTCMODE
 
-	RRAddMonitorMode
+	RRAddCrtcMode
 	1	CARD8			major opcode
 	1	0x09			RandR opcode
 	2	12+(b+p)/4		length
 	4	WINDOW			window
-	2	MONITOR			monitor index
+	2	CRTC			monitor index
 	2				unused
-	36	MONITORMODE		mode
+	36	CRTCMODE		mode
 	b	STRING			mode name
 	p				pad(b)
 	
-	RRDeleteMonitorMode
+	RRDeleteCrtcMode
 	1	CARD8			major opcode
 	1	0x0a			RandR opcode
 	2	3+(b+p)/4		length
 	4	WINDOW			window
-	2	MONITOR			monitor index
+	2	CRTC			monitor index
 	2	CARD16			mode name length
 	b	STRING			mode name
 	p				pad(b)
 	
-	RRSetMonitorMode
+	RRSetCrtcConfig
 
 	1	CARD8			major opcode
 	1	0x0b			RandR opcode
@@ -972,7 +1018,7 @@ A.2.1 Protocol Requests added with versi
 	4	WINDOW			window
 	4	TIMESTAMP		timestamp
 	4	TIMESTAMP		config timestamp
-	2	MONITOR			monitor index
+	2	CRTC			monitor index
 	2	INT16			x
 	2	INT16			y
 	2	MODEID			mode index
@@ -987,7 +1033,7 @@ A.2.1 Protocol Requests added with versi
 	4	TIMESTAMP		new configuration timestamp
 	4	WINDOW			root
 	2	SUBPIXELORDER		subpixel order defined in Render
-	2	MONITOR			monitor
+	2	CRTC			monitor
 	8				unused
 	
 
@@ -1011,7 +1057,7 @@ A.3 Protocol Events
 
 A.3.1 Protocol Events added with version 1.2
 
-	RRMonitorChangeNotify
+	RRCrtcChangeNotify
 
 	1	Base + 1		code
 	1	0			sub-code
@@ -1020,7 +1066,7 @@ A.3.1 Protocol Events added with version
 	4	TIMESTAMP		configuration timestamp
 	4	WINDOW			root window
 	4	WINDOW			request window
-	2	MONITOR			monitor index
+	2	CRTC			monitor index
 	2	MODEID			mode ID
 	2	ROTATION		new rotation and reflection
 	2	SUBPIXELORDER		new subpixel order



More information about the xorg-commit mailing list