docs: Improve the 'Types of Compositors' section

Turn the bullet-point lists into full paragraphs.
This commit is contained in:
Matthias Clasen 2013-03-30 01:11:29 -04:00 committed by Kristian Høgsberg
parent c255bab1ed
commit 41d44af8c8

View File

@ -5,57 +5,53 @@
]> ]>
<chapter id="chap-Compositors"> <chapter id="chap-Compositors">
<title>Types of Compositors</title> <title>Types of Compositors</title>
<para>
Compositors come in different types, depending on which
role they play in the overall architecture of the OS.
</para>
<section id="sect-Compositors-System-Compositor"> <section id="sect-Compositors-System-Compositor">
<title>System Compositor</title> <title>System Compositor</title>
<para> <para>
<itemizedlist> A system compositor can run from early boot until shutdown.
<listitem> It effectively replaces the kernel vt system, and can tie in
<para> with the systems graphical boot setup and multiseat support.
ties in with graphical boot </para>
</para> <para>
</listitem> A system compositor can host different types of session
<listitem> compositors, and let us switch between multiple sessions
<para> (fast user switching, or secure/personal desktop switching).
hosts different types of session compositors </para>
</para> <para>
</listitem> A linux implementation of a system compositor will typically
<listitem> use libudev, egl, kms, evdev and cairo.
<para> </para>
lets us switch between multiple sessions (fast user switching, <para>
secure/personal desktop switching) For fullscreen clients, the system compositor can reprogram the
</para> video scanout address to read directly from the client provided
</listitem> buffer.
<listitem>
<para>
multiseat
</para>
</listitem>
<listitem>
<para>
linux implementation using libudev, egl, kms, evdev, cairo
</para>
</listitem>
<listitem>
<para>
for fullscreen clients, the system compositor can reprogram the
video scanout address to source from the client provided buffer.
</para>
</listitem>
</itemizedlist>
</para> </para>
</section> </section>
<section id="sect-Compositors-Session-Compositor"> <section id="sect-Compositors-Session-Compositor">
<title>Session Compositor</title> <title>Session Compositor</title>
<para> <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 hw.
</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> <itemizedlist>
<listitem> <listitem>
<para> <para>
nested under the system compositor. nesting is feasible because
protocol is async, roundtrip would break nesting
</para>
</listitem>
<listitem>
<para>
gnome-shell gnome-shell
</para> </para>
</listitem> </listitem>
@ -66,17 +62,12 @@
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
compiz? kwin
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
kde compositor? kmscon
</para>
</listitem>
<listitem>
<para>
text mode using vte
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
@ -89,29 +80,17 @@
fullscreen X session under wayland fullscreen X session under wayland
</para> </para>
</listitem> </listitem>
<listitem>
<para>
can run without system compositor, on the hw where it makes
sense
</para>
</listitem>
<listitem>
<para>
root window less X server, bridging X windows into a wayland
session compositor
</para>
</listitem>
</itemizedlist> </itemizedlist>
</para> </para>
</section> </section>
<section id="sect-Compositors-Embedding-Compositor"> <section id="sect-Compositors-Embedding-Compositor">
<title>Embedding Compositor</title> <title>Embedding Compositor</title>
<para> <para>
X11 lets clients embed windows from other clients, or lets client copy X11 lets clients embed windows from other clients, or lets clients
pixmap contents rendered by another client into their window. This is copy pixmap contents rendered by another client into their window.
often used for applets in a panel, browser plugins and similar. This is often used for applets in a panel, browser plugins and similar.
Wayland doesn't directly allow this, but clients can communicate GEM Wayland doesn't directly allow this, but clients can communicate GEM
buffer names out-of-band, for example, using d-bus or as command line buffer names out-of-band, for example, using D-Bus, or command line
arguments when the panel launches the applet. Another option is to arguments when the panel launches the applet. Another option is to
use a nested wayland instance. For this, the wayland server will have use a nested wayland instance. For this, the wayland server will have
to be a library that the host application links to. The host to be a library that the host application links to. The host
@ -125,14 +104,8 @@
application. application.
</para> </para>
<para> <para>
<itemizedlist> An example for this kind of setup is firefox embedding the flash
<listitem> player as a kind of special-purpose compositor.
<para>
firefox embedding flash by being a special purpose compositor to
the plugin
</para>
</listitem>
</itemizedlist>
</para> </para>
</section> </section>
</chapter> </chapter>