Wayland文档翻译:第2章. 合成器的类型

目录

  • 系统合成器
  • 会话合成器
  • 嵌入合成器

合成器根据它们在操作系统整体架构中所扮演的角色而分为不同类型。例如,系统合成器可用于引导系统、处理多用户切换、可能的控制台终端仿真器等。另一种合成器,会话合成器,将提供实际的桌面环境。不同类型的合成器有许多共存的方式。

在本节中,我们介绍了三种依赖于 libwayland-server 的 Wayland 合成器类型。

系统合成器

系统合成器可以从早期引导一直运行到关机。它实际上替代了内核的虚拟终端系统,并可以与系统的图形引导设置和多座位支持进行关联。

系统合成器可以托管不同类型的会话合成器,并允许我们在多个会话之间切换(快速用户切换或安全/个人桌面切换)。

Linux 上的系统合成器实现通常会使用 libudev、egl、kms、evdev 和 cairo。

对于全屏客户端,系统合成器可以重新编程视频扫描输出地址,直接从客户端提供的缓冲区中读取。

会话合成器

会话合成器负责单个用户会话。如果存在系统合成器,则会话合成器将在系统合成器下嵌套运行。嵌套是可行的,因为协议是异步的;在涉及嵌套时,往返会太昂贵。如果没有系统合成器,会话合成器可以直接在硬件上运行。

X 应用程序可以通过按需激活的无根 X 服务器在会话合成器下继续工作。

会话合成器的可能示例包括

  • gnome-shell
  • moblin
  • kwin
  • kmscon
  • rdp 会话
  • Weston 与 X11 或 Wayland 后端是在另一个会话合成器中嵌套的会话合成器。
  • 在 Wayland 下的全屏 X 会话

嵌入合成器

X11 允许客户端嵌入来自其他客户端的窗口,或者将另一个客户端渲染的像素图内容复制到它们的窗口中。这在面板中的小程序、浏览器插件等方面经常使用。Wayland 并不直接允许这样做,但客户端可以通过非直接的方式传递 GEM 缓冲区名称,例如使用 D-Bus 或者当面板启动小程序时使用命令行参数。另一个选择是使用嵌套的 Wayland 实例。为此,Wayland 服务器必须是主机应用程序链接到的库。主机应用程序将 Wayland 服务器套接字名称传递给嵌入式应用程序,并需要实现 Wayland 合成器接口。主机应用程序将客户端表面作为其窗口的一部分进行合成,即在网页或面板中。嵌套 Wayland 服务器的好处在于,它为嵌入式客户端提供了通知主机有关缓冲区更新的请求,并提供了将输入事件从主机应用程序转发的机制。

这种设置的一个示例是 Firefox 将 Flash 播放器嵌入为一种特殊用途的合成器。