[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