diff options
Diffstat (limited to 'doc/publican/Compositors.xml')
| -rw-r--r-- | doc/publican/Compositors.xml | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/doc/publican/Compositors.xml b/doc/publican/Compositors.xml new file mode 100644 index 0000000..7a7bdaa --- /dev/null +++ b/doc/publican/Compositors.xml @@ -0,0 +1,128 @@ +<?xml version='1.0' encoding='utf-8' ?> +<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ +<!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent"> +%BOOK_ENTITIES; +]> +<chapter id="chap-Compositors"> + <title>Types of Compositors</title> + + <para> + Compositors come in different types, depending on which + role they play in the overall architecture of the OS. + For instance, a + <link linkend="sect-Compositors-System-Compositor">system compositor</link> + can be used for booting the system, handling multiple user switching, a + possible console terminal emulator and so forth. A different compositor, a + <link linkend="sect-Compositors-Session-Compositor">session compositor</link> + would provide the actual desktop environment. There are many ways for + different types of compositors to co-exist. + </para> + <para> + In this section, we introduce three types of Wayland compositors relying + on <link linkend="sect-Library-Server">libwayland-server</link>. + </para> + + <section id="sect-Compositors-System-Compositor"> + <title>System Compositor</title> + <para> + A system compositor can run from early boot until shutdown. + It effectively replaces the kernel vt system, and can tie in + with the systems graphical boot setup and multiseat support. + </para> + <para> + A system compositor can host different types of session + compositors, and let us switch between multiple sessions + (fast user switching, or secure/personal desktop switching). + </para> + <para> + A linux implementation of a system compositor will typically + use libudev, egl, kms, evdev and cairo. + </para> + <para> + For fullscreen clients, the system compositor can reprogram the + video scanout address to read directly from the client provided + buffer. + </para> + </section> + <section id="sect-Compositors-Session-Compositor"> + <title>Session Compositor</title> + <para> + A session compositor is responsible for a single user session. + If a system compositor is present, the session compositor will + run nested under the system compositor. Nesting is feasible because + the protocol is asynchronous; roundtrips would be too expensive + when nesting is involved. If no system compositor is present, a + session compositor can run directly on the hardware. + </para> + <para> + X applications can continue working under a session compositor + by means of a root-less X server that is activated on demand. + </para> + <para> + Possible examples for session compositors include + <itemizedlist> + <listitem> + <para> + gnome-shell + </para> + </listitem> + <listitem> + <para> + moblin + </para> + </listitem> + <listitem> + <para> + kwin + </para> + </listitem> + <listitem> + <para> + kmscon + </para> + </listitem> + <listitem> + <para> + rdp session + </para> + </listitem> + <listitem> + <para> + Weston with X11 or Wayland backend is a session compositor nested + in another session compositor. + </para> + </listitem> + <listitem> + <para> + fullscreen X session under Wayland + </para> + </listitem> + </itemizedlist> + </para> + </section> + <section id="sect-Compositors-Embedding-Compositor"> + <title>Embedding Compositor</title> + <para> + X11 lets clients embed windows from other clients, or lets clients + copy pixmap contents rendered by another client into their window. + This is often used for applets in a panel, browser plugins and similar. + Wayland doesn't directly allow this, but clients can communicate GEM + buffer names out-of-band, for example, using D-Bus, or command line + arguments when the panel launches the applet. Another option is to + use a nested Wayland instance. For this, the Wayland server will have + to be a library that the host application links to. The host + application will then pass the Wayland server socket name to the + embedded application, and will need to implement the Wayland + compositor interface. The host application composites the client + surfaces as part of it's window, that is, in the web page or in the + panel. The benefit of nesting the Wayland server is that it provides + the requests the embedded client needs to inform the host about buffer + updates and a mechanism for forwarding input events from the host + application. + </para> + <para> + An example for this kind of setup is firefox embedding the flash + player as a kind of special-purpose compositor. + </para> + </section> +</chapter> |
