[PATCH V2 1/8] wesston: Add weston randr protocol

Quanxian Wang quanxian.wang at intel.com
Mon Mar 24 04:39:13 PDT 2014


Weston protocol wrandr will provide interface to
1) Mode set of output (scale, transform, mode)
2) Position of output (currently support leftof, rightof)
3) New a custom mode
4) Delete mode

This protocol is not expose public. It is only for
QA testing and Admin configuration currently.

Signed-off-by: Quanxian Wang <quanxian.wang at intel.com>
---
 protocol/Makefile.am |   1 +
 protocol/randr.xml   | 228 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 229 insertions(+)
 create mode 100644 protocol/randr.xml

diff --git a/protocol/Makefile.am b/protocol/Makefile.am
index 5e331a7..df2e070 100644
--- a/protocol/Makefile.am
+++ b/protocol/Makefile.am
@@ -5,6 +5,7 @@ protocol_sources =				\
 	text.xml				\
 	input-method.xml			\
 	workspaces.xml				\
+	randr.xml				\
 	text-cursor-position.xml		\
 	wayland-test.xml			\
 	xdg-shell.xml				\
diff --git a/protocol/randr.xml b/protocol/randr.xml
new file mode 100644
index 0000000..07f83a4
--- /dev/null
+++ b/protocol/randr.xml
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="randr">
+
+  <copyright>
+    Copyright © 2014 Quanxian Wang
+    Copyright © 2014 Intel Corporation
+
+    Permission to use, copy, modify, distribute, and sell this
+    software and its documentation for any purpose is hereby granted
+    without fee, provided that the above copyright notice appear in
+    all copies and that both that copyright notice and this permission
+    notice appear in supporting documentation, and that the name of
+    the copyright holders not be used in advertising or publicity
+    pertaining to distribution of the software without specific,
+    written prior permission.  The copyright holders make no
+    representations about the suitability of this software for any
+    purpose.  It is provided "as is" without express or implied
+    warranty.
+
+    THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+    SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+    FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+    SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+    AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+    THIS SOFTWARE.
+  </copyright>
+
+  <interface name="weston_randr" version="1">
+    <description summary="randr">
+      The global interface exposing randr capabilities.
+      As a weston_randr, that provides the interfaces for apps to more operations
+      on output.
+
+      The aim of weston_randr is to get modes list, choose preferred mode,
+      layout the output including position, rotate, and en/disable.
+      The idea is from xrandr protocoal of xserver. It is very convenient for
+      weston/wayland user to operates on mode setting of output.
+    </description>
+
+    <request name="destroy" type="destructor">
+      <description summary="unbind from the weston_randr interface">
+	Informs the server that the client will not be using this
+	protocol object anymore. This does not affect any other
+	objects, weston_randr objects included.
+      </description>
+    </request>
+
+    <request name="start">
+      <description summary="randr request callback">
+	It is request notification when the next output randr commit
+	is coming and is useful for notifying client the result of
+	operations on the output. The randr request will take effect
+	on the next weston_randr.commit. The notification will only be
+	posted for one randr request unless requested again.
+      </description>
+      <arg name="output" type="object" interface="wl_output"/>
+      <arg name="callback" type="new_id" interface="wrandr_callback"/>
+    </request>
+
+    <enum name="mode">
+      <description summary="mode information">
+	These flags describe properties of an output mode.
+	They are used in the flags bitfield of the mode event.
+	Here we take the last 28-32th bit as additional flags
+	which is different with original output mode.
+      </description>
+      <entry name="custom" value="0x1000"
+	     summary="indicates this is the custom mode"/>
+      <entry name="del" value="0x2000"
+	     summary="indicates the mode will be deleted"/>
+    </enum>
+
+    <request name="set_mode">
+      <description summary="set the mode of output">
+	Set the mode of output.
+      </description>
+      <arg name="output" type="object" interface="wl_output"
+           summary="the output object"/>
+      <arg name="width" type="int" summary="width of the mode in hardware units"/>
+      <arg name="height" type="int" summary="height of the mode in hardware units"/>
+      <arg name="refresh" type="int" summary="vertical refresh rate in mHz"/>
+    </request>
+
+    <request name="set_transform">
+      <description summary="set the transform of output">
+	Set the transform of output, the valuable value should
+	be 0-7. This means 0, 90, 180, 270, FLIP-0, FLIP-90,
+	FLIP-180, FLIP-270. The values are referred from
+	the wl_output specification.
+      </description>
+      <arg name="output" type="object" interface="wl_output"
+           summary="the output object"/>
+      <arg name="transform" type="uint"
+           summary="the value should be between 0-7"/>
+    </request>
+
+    <request name="set_scale">
+      <description summary="set the scale of output">
+	Set the scale of output.
+      </description>
+      <arg name="output" type="object" interface="wl_output"
+           summary="the output object"/>
+      <arg name="scale" type="int"
+           summary="Scale the output"/>
+    </request>
+
+    <enum name="move">
+      <description summary="move target output to the position of source output">
+	The purpose is mainly to allow clients move target output to
+        the position of source output.
+      </description>
+      <entry name="rightof" value="0"/>
+      <entry name="leftof" value="1"/>
+    </enum>
+
+    <request name="move">
+      <description summary="move target output">
+	Move the target output to be leftof/rightof source output.
+      </description>
+      <arg name="target_output" type="object" interface="wl_output"
+           summary="the target output object"/>
+      <arg name="source_output" type="object" interface="wl_output"
+           summary="the source output object"/>
+      <arg name="move" type="int"/>
+    </request>
+
+    <request name="del_mode">
+      <description summary="set the mode of output">
+	Set the mode of output.
+      </description>
+      <arg name="output" type="object" interface="wl_output"
+           summary="the output object"/>
+      <arg name="width" type="int" summary="width of the mode in hardware units"/>
+      <arg name="height" type="int" summary="height of the mode in hardware units"/>
+      <arg name="refresh" type="int" summary="vertical refresh rate in mHz"/>
+    </request>
+
+    <request name="new_mode">
+      <description summary="new custom mode">
+	Set the mode of output.
+      </description>
+      <arg name="output" type="object" interface="wl_output"
+           summary="the output object"/>
+      <arg name="fclock" type="int"
+           summary="Pixel clock in hardware units Mhz"/>
+      <arg name="hdisplay" type="int"
+           summary="The number of pixel for one horticontal line in units Hz"/>
+      <arg name="hsync_start" type="int"
+           summary="Start of horizontal sync signal in units Hz"/>
+      <arg name="hsync_end" type="int"
+           summary="End of horizontal sync signal in units Hz"/>
+      <arg name="htotal" type="int"
+           summary="The whole cycle of a horizontal line in units Hz"/>
+      <arg name="vdisplay" type="int"
+           summary="The number of pixel for one vertical line in units Hz"/>
+      <arg name="vsync_start" type="int"
+           summary="Start of vertical sync signal in units Hz"/>
+      <arg name="vsync_end" type="int"
+           summary="End of vertical sync signal in units Hz"/>
+      <arg name="vtotal" type="int"
+           summary="The whole cycle of a vorizontal line in units Hz"/>
+      <arg name="hsync" type="string"
+           summary="the polarity of the horizontal sync pulses"/>
+      <arg name="vsync" type="string"
+           summary="the polarity of the vertical sync pulses"/>
+    </request>
+
+    <request name="commit">
+      <description summary="multiple operations on one output">
+	Commit all the previous output changes from the client.
+	Before the commit, the chagne request will be stored in wrandr interface.
+	Once randr interface commit, it will update the change and clear up
+	the requests from this client.
+      </description>
+      <arg name="output" type="object" interface="wl_output"
+           summary="the output object"/>
+    </request>
+  </interface>
+
+  <interface name="wrandr_callback" version="1">
+    <description summary="weston randr callback object">
+      Clients can handle the 'done' event to get notified when
+      the related request is done.
+    </description>
+
+    <request name="destroy" type="destructor">
+      <description summary="unbind from the interface">
+	Informs the server that the client will not be using this
+	protocol object anymore. This does not affect any other
+	objects, wrandr_callback objects included.
+      </description>
+    </request>
+
+    <enum name="action">
+      <description summary="flags">
+	These flags show the status of every action excuted by randr.
+      </description>
+      <entry name="mode" value="0"/>
+      <entry name="move" value="1"/>
+      <entry name="transform" value="2"/>
+      <entry name="scale" value="3"/>
+      <entry name="newmode" value="4"/>
+      <entry name="delmode" value="5"/>
+    </enum>
+
+    <enum name="result">
+      <description summary="action result">
+	Action result
+      </description>
+      <entry name="SUCCESS" value="1"/>
+      <entry name="FAIL" value="2"/>
+      <entry name="NOACT" value="3"/>
+    </enum>
+
+    <event name="done">
+      <description summary="action done event">
+	Notify the randr client that mode setting has been done.
+	Flag shows the action executed. every bit stands for one action.
+	Result shows the final status for every action, every 2
+	bit will show that.
+      </description>
+      <arg name="flags" type="uint" summary="flag action"/>
+      <arg name="result" type="uint" summary="flag result"/>
+    </event>
+  </interface>
+</protocol>
-- 
1.8.1.2



More information about the wayland-devel mailing list