[PATCH] Define per-output DPMS protocol

Adam Jackson ajax at redhat.com
Thu Jun 11 14:13:41 PDT 2009


---
 randrproto.txt |   85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 82 insertions(+), 3 deletions(-)

diff --git a/randrproto.txt b/randrproto.txt
index 9489d83..4b0660b 100644
--- a/randrproto.txt
+++ b/randrproto.txt
@@ -124,7 +124,12 @@ following features are added in this version:
    • Panning. It was removed with RandR 1.2 because the old semantics didn't
      fit any longer. With RandR 1.3 panning can be specified per crtc.
 
-1.1 Acknowledgements
+1.4 Introduction to version 1.4 of the extension
+
+Version 1.4 extends DPMS control to individual outputs, and defines the
+interaction with the legacy DPMS extension.
+
+1.99 Acknowledgements
 
 Our thanks to the contributors to the design found on the xpert mailing
 list, in particular:
@@ -300,6 +305,11 @@ MODEINFO { id: MODE
 
 REFRESH { rates: LISTofCARD16 }
 
+DPMSLEVEL { ModeOn,		The DPMS levels are identical to the DPMS
+            ModeStandby,	extension definitions; they are listed here
+            ModeSuspend,	for convenience.
+            ModeOff }
+
                               ❧❧❧❧❧❧❧❧❧❧❧
 
 6. Extension Initialization
@@ -1240,6 +1250,29 @@ dynamic changes in the display environment.
 
 	RRGetOutputPrimary returns the primary output for the screen.
 
+7.3. Extension Requests added in version 1.4 of the extension
+
+┌───
+    RRSetOutputDPMS
+	output: OUTPUT
+	level: DPMSLEVEL
+└───
+	Errors: Output, Value
+
+	RRSetOutputDPMS sets the DPMS state of 'output' to 'mode'.
+
+	If 'level' does not name a defined DPMS level, BadValue is generated.
+
+┌───
+    RRGetOutputDPMS
+	output: OUTPUT
+      â–¶
+	level: DPMSLEVEL
+└───
+	Errors: Output
+
+	RRGetOutputDPMS returns the DPMS state of 'output'.
+
                               ❧❧❧❧❧❧❧❧❧❧❧
 
 8. Extension Events
@@ -1591,8 +1624,8 @@ with 1.1.
 
 11. Relationship with other extensions
 
-Two other extensions have a direct relationship with this extension. This
-section attempts to explain how these three are supposed to work together.
+Three other extensions have a direct relationship with this extension. This
+section attempts to explain how these four are supposed to work together.
 
 11.1 XFree86-VidModeExtension
 
@@ -1624,6 +1657,23 @@ 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.
 
+11.3 DPMS
+
+The DPMS extension's controls effectively apply the requested DPMS level to
+all outputs on all screens.  This includes both timeout-triggered
+transitions, and forced DPMS level.  The DPMS extension's query interface
+returns the on-most level across all outputs.  DPMSEnable and DPMSDisable
+control only the DPMS extension requests, not the RANDR requests.
+
+RANDR does not implement DPMS timeouts directly.  Experience with current
+desktops shows that policy is more complicated than can be expressed with
+timers and is usually implemented with a daemon in the session.  The
+complexity of implementing timers for multiple outputs seems excessive given
+that they would probably be unused.
+
+RANDR should be used in preference to the DPMS extension when both are
+present.
+
                               ❧❧❧❧❧❧❧❧❧❧❧
 
 Appendix A. Protocol Encoding
@@ -2280,6 +2330,35 @@ A.2.2 Protocol Requests added with version 1.3
 	4	CARD32			pad4
 └───
 
+A.2.3 Protocol Requests added with version 1.4
+
+┌───
+    RRSetOutputDPMS
+	1	CARD8			major opcode
+	1	32			RandR opcode
+	2	3			length
+	4	OUTPUT			output
+	4	DPMSLEVEL		level
+└───
+    
+┌───
+    RRGetOutputDPMS
+	1	CARD8			major opcode
+	1	33			RandR opcode
+	2	2			length
+	4	OUTPUT			output
+      â–¶
+	1	1			Reply
+	1				unused
+	2	CARD16			sequence number
+	4	CARD32			length
+	4	DPMSLEVEL		level
+	4	CARD32			pad1
+	4	CARD32			pad2
+	4	CARD32			pad3
+	4	CARD32			pad4
+└───
+
 A.3 Protocol Events
 
 ┌───
-- 
1.6.2.2



More information about the xorg-devel mailing list