正如Mark Shuttleworth 最近宣布的那样,Ubuntu将逐步使用Wayland作为其显示管理器。
X11和Wayland之间最大的区别是什么?为什么Wayland会让Ubuntu更好?
正如Mark Shuttleworth 最近宣布的那样,Ubuntu将逐步使用Wayland作为其显示管理器。
X11和Wayland之间最大的区别是什么?为什么Wayland会让Ubuntu更好?
Answers:
您可以查看Wayland体系结构页面,以了解其设计差异。通过将所有内容强制通过标准GEM / DRM堆栈直接进入内核并管理合成本身,可以简化整个图形堆栈。
将其与X堆栈进行比较,在X堆栈中到处都是点滴。有些X混乱是通过灵活的设计实现的,有些则变得越来越麻烦。后来,所有合成器(Compiz / Metacity / Mutter / KWin / etc)都被添加了。他们的核心是黑客,他们可以做X应该做的事情。如果事情像往常一样继续向外扩展,我们将达到项目无法维护的地步。
总而言之,只要有硬件支持,它就可以使整个堆栈更高效,在标准设置中使用时也不会那么痛苦。
但是,到目前为止,有几个问题我还没有看到补救措施:
X非常了解网络。您可以将窗口发送到其他计算机,也可以具有多个屏幕,这些屏幕具有远程登录名和类似的各种时髦内容。这看似相当专业,但却是被广泛使用的技术。与之相比,Wayland显得相当局部和静态。
还有驱动程序支持。开源驱动程序尚未支持Wayland赖以生存的KMS / shared-GEM / shared-DRM技术。纯粹主义者对Nouveau可能还可以,但是有人花100-400英镑购买了高性能3D图形卡,他们不会对使用当前开放驱动程序时会出现的片状差3D性能感到满意。
2018更新。17.10使用Wayland作为默认显示服务器(除非您有封闭的驱动程序,或者不支持它的驱动程序,或者需要X)。18.04和18.10都使用X作为全局默认值(尽管您可以安装Wayland)。
除了这个职位,我什么都不做,似乎我们仍然是Nvidia的标准,无法获得真正的吸引力。在此之前,我认为我们不会看到足够的头脑份额和发展实力落后于Wayland。游戏/表演市场使用X。MCE市场使用X(和直接帧缓冲器)。我不确定Wayland是否会真正有机会。
X和Wayland之间有很多差异。从图形方面来看,最大的大概是Wayland 不做任何绘图。
X有两个绘图API。其中之一是X11核心协议的一部分,该协议是古老的,无用的并且没有人使用。另一个是XRender扩展程序,它提供了现代的合成操作,例如渐变。例如,这就是开罗的用途。X还具有字体绘制API。
Wayland没有绘图API。Wayland客户端获得DRM缓冲区句柄,该句柄基本上是指向某些图形内存的指针。Wayland不知道或不在乎客户端如何吸引该缓冲区。用X术语,这意味着所有应用程序都可以直接渲染 -绘图请求不需要通过服务器。
Wayland唯一的渲染方法是将客户端的缓冲区复制到屏幕上。
就收益而言,Wayland的复杂度要比X小得多,这应该使维护更容易-尽管其中的一些简化来自将复杂性(例如:如何实际利用该缓冲区,网络透明性)推到了X的其他层次。堆。通过让客户端负责所有渲染,客户端可以更聪明地处理诸如双缓冲之类的事情。
图形之外还有其他好处。例如,使用沙盒应用程序要容易得多。
我眼中的主要区别是Wayland比X-Server更接近内核。随着图形驱动程序从X移到内核(称为内核模式设置,KMS),Wayland计划使用此新功能来替换X。您可能会看到以下信息...
占用空间比X少-因为显示是由内核Wayland处理的,因此不必为实现可用而进行过多的实现。这是双向的,因为我怀疑X转发(看另一台PC上的一个屏幕)可能会随着X消失。
KMS功能:无需重新启动X服务器即可更改屏幕分辨率(尽管我相信这已经在X上修复了,至少对于nvidia而言已解决),如果您愿意,可以在内核恐慌的情况下针对英特尔芯片组调试控制台(移至nouveau)。之类的东西。
如果我错了,有人可以纠正我吗?
所有其他文章都强调了Wayland的好处,但这不仅是一件好事。X与Wayland相比,最大的优点是X通过网络工作。X是网络透明的,您可以在实际程序在另一台通常功能更强大的计算机上运行时,在终端上显示窗口或使用XDMCP完整会话。像Wayland这样的东西,网络透明性的想法就消失了。如今,对于快速的网络以及诸如VNC和RDP之类的其他协议,可能并不需要那么多,只是出于完整性的考虑。
任何人在日常工作中都会很快注意到的两件事: