diff --git a/doc/Wayland/en_US/Compositors.xml b/doc/Wayland/en_US/Compositors.xml index d5311fa6..f674776a 100644 --- a/doc/Wayland/en_US/Compositors.xml +++ b/doc/Wayland/en_US/Compositors.xml @@ -5,57 +5,53 @@ ]> Types of Compositors + + + Compositors come in different types, depending on which + role they play in the overall architecture of the OS. + +
System Compositor - - - - ties in with graphical boot - - - - - hosts different types of session compositors - - - - - lets us switch between multiple sessions (fast user switching, - secure/personal desktop switching) - - - - - multiseat - - - - - linux implementation using libudev, egl, kms, evdev, cairo - - - - - for fullscreen clients, the system compositor can reprogram the - video scanout address to source from the client provided buffer. - - - + 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. + + + 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). + + + A linux implementation of a system compositor will typically + use libudev, egl, kms, evdev and cairo. + + + For fullscreen clients, the system compositor can reprogram the + video scanout address to read directly from the client provided + buffer.
Session Compositor + 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. + + + X applications can continue working under a session compositor + by means of a root less X server that is activated on demand. + + + Possible examples for session compositors include - - - nested under the system compositor. nesting is feasible because - protocol is async, roundtrip would break nesting - - - - + + gnome-shell @@ -66,17 +62,12 @@ - compiz? + kwin - kde compositor? - - - - - text mode using vte + kmscon @@ -89,29 +80,17 @@ fullscreen X session under wayland - - - can run without system compositor, on the hw where it makes - sense - - - - - root window less X server, bridging X windows into a wayland - session compositor - -
Embedding Compositor - X11 lets clients embed windows from other clients, or lets client copy - pixmap contents rendered by another client into their window. This is - often used for applets in a panel, browser plugins and similar. + 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 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 use a nested wayland instance. For this, the wayland server will have to be a library that the host application links to. The host @@ -125,14 +104,8 @@ application. - - - - firefox embedding flash by being a special purpose compositor to - the plugin - - - + An example for this kind of setup is firefox embedding the flash + player as a kind of special-purpose compositor.