Wayland是一个桌面的显示服务器协议和在Linux上实做这个协议的软件库。Wayland是一个自由软件项目,采用MIT许可证发布,于2008年由 Intel 开放源代码技术中心的成员 Kristian Høgsberg 所发起的。他认为每一个显示画面皆是完美的,意思是应用程序将能充分地去控制图形的显示,使我们完全无法察觉任何的撕裂、延迟、重画及闪烁”。Wayland使得Compositor能够与应用程序和视频硬件直接交互。应用程序在它们自己的缓冲区中进行图形渲染。这样一来,窗口管理器就变成了一个显示管理服务,专门负责渲染那些屏幕上的程序。这比X窗口系统中的窗口管理器要更简单,高效。现有的Compositor例如Compiz,KWin和Mutter对Wayland都有着不同程度的支持。

Wayland的开发者Kristian Høgsberg,一个专注于GNU/Linux图形开发的软件工程师,在2008年发起了Wayland project。当时他在Red Hat工作,现在他在intel。Wayland是自由软件,它的库以MIT License授权,示例程序和Compositor一开始以GPLv2授权。现在整个Project都是以MIT License授权的了。直到2010年11月份,Wayland还仅仅只能在intel,AMD,Nvidia的开源驱动上运行。“Wayland”这个名字来自于Wayland,MA。据说Høgsberg是在开车穿过那个小镇时得到灵感的。Wayland 运用既有的 Linux 核心技术,像是 Direct Rendering Manager(DRM), kernel mode-setting(KMS)以及 Graphics Execution Manager(GEM))以提供一个最小化的显示管理服务。Wayland 混合器在 2010 年 6 月已从桌面常用的 OpenGL 改为 OpenGL ES。这个项目也开发支持 Wayland 显示的 Qt,而不需要 X。大部分应用程序都有望获得通过库,无需修改程序即可支持 Wayland。

在 Wayland 中:内核捕获鼠标点击事件并发送给 Wayland Compositor。由于是直接发给Compositor的,所以Wayland会正确地计算出按钮的位置。同时它会把这一事件发送给按钮所在的应用程序来处理。应用程序直接渲染,无需向Wayland请求。只需在绘制完成之后向Compositor 发送一条信息表明这块区域被更新了。Compositor收到这条信息后,立即重新合成整个桌面而无需向Wayland请求。目前,Wayland使用OpenGL ES而不是传统的OpenGL。除了这个Wayland Compositor本身是跑在X Window之上,其本身合成效果、处理窗口布局等等,都完全没有用到X,而且整个代码非常简洁。

相关导航