docs: Improve the 'Types of Compositors' section
Turn the bullet-point lists into full paragraphs.
This commit is contained in:
parent
c255bab1ed
commit
41d44af8c8
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user