"Fossies" - the Fresh Open Source Software Archive

Member "wayland-1.18.0/doc/publican/sources/Compositors.xml" (11 Feb 2020, 4698 Bytes) of package /linux/misc/wayland-1.18.0.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) XML source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "Compositors.xml": 1.17.0_vs_1.18.0.

    1 <?xml version='1.0' encoding='utf-8' ?>
    2 <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
    3 <!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
    4 %BOOK_ENTITIES;
    5 ]>
    6 <chapter id="chap-Compositors">
    7   <title>Types of Compositors</title>
    8 
    9   <para>
   10     Compositors come in different types, depending on which
   11     role they play in the overall architecture of the OS.
   12     For instance, a
   13     <link linkend="sect-Compositors-System-Compositor">system compositor</link>
   14     can be used for booting the system, handling multiple user switching, a
   15     possible console terminal emulator and so forth. A different compositor, a
   16     <link linkend="sect-Compositors-Session-Compositor">session compositor</link>
   17     would provide the actual desktop environment. There are many ways for
   18     different types of compositors to co-exist.
   19   </para>
   20   <para>
   21     In this section, we introduce three types of Wayland compositors relying
   22     on <link linkend="sect-Library-Server">libwayland-server</link>.
   23   </para>
   24 
   25   <section id="sect-Compositors-System-Compositor">
   26     <title>System Compositor</title>
   27     <para>
   28       A system compositor can run from early boot until shutdown.
   29       It effectively replaces the kernel vt system, and can tie in
   30       with the systems graphical boot setup and multiseat support.
   31     </para>
   32     <para>
   33       A system compositor can host different types of session
   34       compositors, and let us switch between multiple sessions
   35       (fast user switching, or secure/personal desktop switching).
   36     </para>
   37     <para>
   38       A linux implementation of a system compositor will typically
   39       use libudev, egl, kms, evdev and cairo.
   40     </para>
   41     <para>
   42       For fullscreen clients, the system compositor can reprogram the
   43       video scanout address to read directly from the client provided
   44       buffer.
   45     </para>
   46   </section>
   47   <section id="sect-Compositors-Session-Compositor">
   48     <title>Session Compositor</title>
   49     <para>
   50       A session compositor is responsible for a single user session.
   51       If a system compositor is present, the session compositor will
   52       run nested under the system compositor. Nesting is feasible because
   53       the protocol is asynchronous; roundtrips would be too expensive
   54       when nesting is involved. If no system compositor is present, a
   55       session compositor can run directly on the hardware.
   56      </para>
   57      <para>
   58       X applications can continue working under a session compositor
   59       by means of a root-less X server that is activated on demand.
   60      </para>
   61     <para>
   62        Possible examples for session compositors include
   63       <itemizedlist>
   64         <listitem>
   65           <para>
   66         gnome-shell
   67       </para>
   68     </listitem>
   69     <listitem>
   70       <para>
   71         moblin
   72       </para>
   73     </listitem>
   74     <listitem>
   75       <para>
   76         kwin
   77       </para>
   78     </listitem>
   79     <listitem>
   80       <para>
   81         kmscon
   82       </para>
   83     </listitem>
   84     <listitem>
   85       <para>
   86         rdp session
   87       </para>
   88     </listitem>
   89     <listitem>
   90       <para>
   91         Weston with X11 or Wayland backend is a session compositor nested
   92         in another session compositor.
   93       </para>
   94     </listitem>
   95     <listitem>
   96       <para>
   97         fullscreen X session under Wayland
   98       </para>
   99     </listitem>
  100       </itemizedlist>
  101     </para>
  102   </section>
  103   <section id="sect-Compositors-Embedding-Compositor">
  104     <title>Embedding Compositor</title>
  105     <para>
  106       X11 lets clients embed windows from other clients, or lets clients
  107       copy pixmap contents rendered by another client into their window.
  108       This is often used for applets in a panel, browser plugins and similar.
  109       Wayland doesn't directly allow this, but clients can communicate GEM
  110       buffer names out-of-band, for example, using D-Bus, or command line
  111       arguments when the panel launches the applet.  Another option is to
  112       use a nested Wayland instance.  For this, the Wayland server will have
  113       to be a library that the host application links to.  The host
  114       application will then pass the Wayland server socket name to the
  115       embedded application, and will need to implement the Wayland
  116       compositor interface.  The host application composites the client
  117       surfaces as part of it's window, that is, in the web page or in the
  118       panel.  The benefit of nesting the Wayland server is that it provides
  119       the requests the embedded client needs to inform the host about buffer
  120       updates and a mechanism for forwarding input events from the host
  121       application.
  122     </para>
  123     <para>
  124       An example for this kind of setup is firefox embedding the flash
  125       player as a kind of special-purpose compositor.
  126     </para>
  127   </section>
  128 </chapter>