summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>2012-11-27 17:03:41 +0200
committerKristian Høgsberg <krh@bitplanet.net>2012-11-27 11:13:38 -0500
commite8fbce73c7d2d546fcb90fe6115306f27c699fff (patch)
treedaac2146af7316d9a267d3218a2e960dd2826c4c
parent00639de12050c8755965a569de4f6df9dc36171f (diff)
protocol: Add a wl_surface request for setting buffer transformation
This request allows a client to render its contents according to the output transform, enabling the compositor to use optimizations such as overlays, hardware cursors, scan out of a client buffer for fullscreen surface, etc, even if the output is rotated.
-rw-r--r--protocol/wayland.xml34
1 files changed, 31 insertions, 3 deletions
diff --git a/protocol/wayland.xml b/protocol/wayland.xml
index cc8fb06..0ce68ef 100644
--- a/protocol/wayland.xml
+++ b/protocol/wayland.xml
@@ -153,7 +153,7 @@
</event>
</interface>
- <interface name="wl_compositor" version="1">
+ <interface name="wl_compositor" version="2">
<description summary="the compositor singleton">
A compositor. This object is a singleton global. The
compositor is in charge of combining the contents of multiple
@@ -731,7 +731,7 @@
</event>
</interface>
- <interface name="wl_surface" version="1">
+ <interface name="wl_surface" version="2">
<description summary="an onscreen surface">
A surface. This is an image that is displayed on the screen.
It has a location, size and pixel contents.
@@ -921,7 +921,35 @@
</description>
<arg name="output" type="object" interface="wl_output"/>
</event>
- </interface>
+
+ <!-- Version 2 additions -->
+
+ <request name="set_buffer_transform" since="2">
+ <description summary="sets the buffer transformation">
+ This request sets an optional transformation on how the compositor
+ interprets the contents of the buffer attached to the surface. The
+ accepted values for the transform parameter are the values for
+ wl_output.transform.
+
+ Buffer transform is double-buffered state, see wl_surface.commit.
+
+ A newly created surface has its buffer transformation set to normal.
+
+ The purpose of this request is to allow clients to render content
+ according to the output transform, thus permiting the compositor to
+ use certain optimizations even if the display is rotated. Using
+ hardware overlays and scanning out a client buffer for fullscreen
+ surfaces are examples of such optmizations. Those optimizations are
+ highly dependent on the compositor implementation, so the use of this
+ request should be considered on a case-by-case basis.
+
+ Note that if the transform value includes 90 or 270 degree rotation,
+ the width of the buffer will become the surface height and the height
+ of the buffer will become the surface width.
+ </description>
+ <arg name="transform" type="int"/>
+ </request>
+ </interface>
<interface name="wl_seat" version="1">
<description summary="seat">