好久没有写blog了,今天终于有时间可以写点什么了,今天还早,本来想写点内核相关的东西,但脑子里突然想到了这个话题,简单闲聊,权当笔记。

图形架构

之前写过有关Linux中图形架构的文章,有兴趣的同学可以去翻一下。其中图形引擎部分,原本仅关注了Xorg,但如今,Xorg似乎已经处在被淘汰的边缘,毕竟年纪太大,在软硬件都飞速发展的今天,Xorg应该是为数不多的年龄超过30岁的软件了。

Xorg为何会淘汰?

主要是因为其原有的架构设计与现如今各种严苛的绘图需求不相匹配,主要表现如:

  1. Xorg大管家管事太多,除了管理input,所有的绘图请求、窗口管理、窗口合成都必须要与Xorg进行交互,导致Xorg上存在性能瓶颈。根源还在于Xorg的架构太复杂。
  2. Xorg绘图无法充分利用GPU的硬件加速。所有绘图操作都必须提交到Xorg完成,而Xorg自身,对于2D加速,虽然有EXA;对于3D加速,虽然有Glamour,但仍旧无法充分利用硬件加速。

替代者?

谁将成为未来的主流?

从当前的趋势看,无疑是Wayland。

Wayland的优势?

相比Xorg,主要的优势:

1.架构简单,有更好的性能。简单说,就是职责变少,不管闲事,使客户端自己控制绘图操作(比如分配缓冲区),与客户端的交互减少,消除了性能瓶颈。

  1. 硬件加速利用更充分。由于客户端自己控制绘图操作,绘图(比如画个圆)不在通过Xorg,而是客户端自己分配缓冲区,自己绘制,那么客户端就可以直接利用GPU来画(比如OpenGL接口),不需要经过Xorg中转,显然会有更好的性能。

什么阻碍了Wayland?

其实,从Wayland的提出,到如今,已经很多年了,但为何迟迟没有见到Wayland全面替代Xorg的景象呢?

最主要的还是生态问题,就跟Linux桌面系统发展时遇到的最大障碍一样,Xorg已经建立了完整的成熟的生态,有众多软硬件的支持,而生态建立是一个漫长的过程,需要大量的投入,Wayland的生态一直在逐步建立和完善中,到如今,已经接近成熟,而且各大软硬件厂商都一致看好Wayland,相关投入比较大,替代指日可待。

生态都有些啥?

这里所说的图形环境中的生态,主要包括:

1、图形开发工具(上层)。比如GTK+和QT,当前图形环境中的绝大部分应用程序都是基于这两个工具开发的,Wayland要thrive,必然需要这两个的支持。 2、图形桌面环境。比如Gnome、KDE、Mate,用户直接接触是桌面环境,包括面板、桌面(Shell)、登陆管理器、窗口管理器、文件资源浏览器等,需要整个桌面环境都支持Wayland,而这些组件原本都严重依赖于Xorg,要切换,那相应的移植工作量可不是一点点。 3、硬件驱动。这里主要指显卡,在原有的Xorg架构中,显卡驱动通常由两部分组成:位于Xorg中DDX层的用户态驱动和位于内核的drm驱动,切换至Wayland后,看似不需要用户态驱动了,但其实由于绘图操作转由客户应用程序完成,用户态驱动仍然是需要的,只是如果用户态程序如果都用OpenGL来绘图的话,那用户态驱动就统一由mesa来提供了(dri启动),但如果不用OpenGL,那么仍需要相应的用户态驱动来直接操作硬件。另一方面,如果都依赖于OpenGL,那么还需要各大厂商继续完善对mesa的支持才行。

当前进展如何?

在大家(软件、硬件厂商和组织)心里,都认同Wayland的先进性,但受限于生态建立和完善需要的大量投入,切换过程还是比较漫长,进展也相对比较慢。

当前状态看:

  • 图形开发工具方面。GTK3和QT已经完全支持Wayland,而GTK2已经处于不维护状态,当前几乎所有的原本基于GTK2的应用程序,都有向GTK3迁移的趋势,主要动机还在于需要支持wayland。关于GTK3和GTK2的差距,后面在单独的文章中继续聊。

  • 桌面环境方面。当前Gnome3跑的最快,即将发布的Fedora25中默认将使用Wayland作为图形引擎,而Xorg只作为备选,说明GNome3已经全面支持了Wayland,加上GTK3完全支持Wayland,所以,对于Gnome3来说,已经基本实现了切换,前几天下了个Fedora25的beta版本体验了一下,效果还是很不错的。另一方面,其他主流的桌面,如KDE、Enlightenment、Mate都正在紧锣密鼓的切换过程中,最近的工作重点都在wayland的切换上,相信不久也会跟上Gnome3的节奏。

  • 硬件驱动方面。由于GTK3和QT都全面支持Wayland,而其后续主要的绘图后端都使用OpenGL,所以驱动方面,暂时没有新的需求。

整体看,wayland切换进度在加快,但尚未能完全替代Xorg,但未来已能预见。