为什么 Wayland 更好?

Hil*_*lar 212 gui xorg wayland

正如Mark Shuttleworth最近宣布的那样,Ubuntu 将转向使用 Wayland 作为其显示管理器。

X11和Wayland最大的区别是什么?为什么 Wayland 会让 Ubuntu 变得更好?

Oli*_*Oli 154

您可以查看Wayland 架构页面以了解它在设计上的不同之处。它应该通过强制所有内容通过标准 GEM/DRM 堆栈直接进入内核并管理合成本身来简化整个图形堆栈。

将其与 X 堆栈进行比较,在那里您到处都有点点滴滴。一些 X 混乱已经通过灵活的设计,一些已经成长的烦恼。所有的合成器(Compiz/Metacity/Mutter/KWin/etc)都是在事后添加的。它们的核心是黑客来做 X 可能应该做的事情。如果事情像以前一样继续向外扩展,我们将达到项目无法维护的地步。

总而言之,当有硬件支持时,它应该使整个堆栈在标准设置中使用时更高效且痛苦更少。

但是,到目前为止,我还没有看到一些补救措施:

  • X 非常了解网络。您可以将窗口发送到其他计算机,您可以拥有多个带有远程登录的屏幕以及诸如此类的各种时髦的东西。这可能看起来相当专业,但它是广泛使用的技术。相比之下,Wayland 显得相当本地化和静态。

  • 还有驱动程序支持。闭源驱动程序尚未支持 Wayland 赖以生存的 KMS/shared-GEM/shared-DRM 技术。纯粹主义者可能对 Nouveau 没问题,但在高性能 3D 显卡上支付 100-400 英镑的人不会对他们使用当前开放驱动程序获得的片状 3D 性能感到满意。

    更新: Nvidia 正在努力支持 Wayland 和 Mir


2018 更新。17.10 使用 Wayland 作为默认显示服务器(除非你有一个封闭的驱动程序,或者一个不支持它的驱动程序,或者需要 X)。18.04 和 18.10 都使用 X 作为全局默认值(尽管您可以安装 Wayland)。

我不负责任何事情,但从这个职位来看,我们似乎距离获得真正的吸引力仍然是一个衡量标准的 Nvidia 。在那之前,我认为我们不会看到足够的思想共享和发展力量支持 Wayland。游戏/性能市场正在使用 X。MCE 市场正在使用 X(和直接帧缓冲区)。我不确定韦兰是否会有真正的机会。

  • 出于多种原因,网络透明度的事情被夸大了。1. 纯 X 转发仅在 LAN 上足够快。由于延迟,通过互联网原始 X 无法使用。为了获得不错的性能,您必须使用第三方协议,如 NX 或 VNC。2. 由于 X 的架构,NX 和 VNC 都很难设置。使用Wayland应该更容易。3. 很少有现代工具包使用 X 的绘图代码。他们只是将自己绘制到位图并将其发送给 X。这与 Wayland 完全相同,并且具有相同的网络特性。 (24认同)
  • 我同意第 1 点,但在良好的 LAN 上,X-forwarding 在质量或性能方面无可匹敌。根据我的经验,这比任何一种选择都要好得多。 (5认同)
  • @poolie:看来他们改变了主意。;-) (3认同)
  • 来自 [BionicBeaver/ReleaseNotes](https://wiki.ubuntu.com/BionicBeaver/ReleaseNotes):“X 是默认显示服务器。Wayland 作为技术预览提供,**预计在 20.04 成为默认显示服务器LTS**。要尝试一下,只需从登录屏幕上的齿轮中选择 Ubuntu on Wayland。现在可以在 ~/.local/share/xorg 中找到 X.org 日志” [强调我的] (2认同)

RAO*_*AOF 61

X 和 Wayland 之间有很多不同之处。从图形方面来看,最大的可能是 Wayland不做任何绘图

X 有两个绘图 API。其中之一是核心 X11 协议的一部分,它是古老的、无用的、没有人使用的。另一个是 XRender 扩展,它提供现代复合操作,以及渐变等其他功能。例如,这就是开罗所使用的。X 也有字体绘制 API。

Wayland 没有绘图 API。Wayland 客户端获得一个 DRM 缓冲区句柄,它基本上是一个指向某些图形内存的指针;Wayland 不知道也不关心客户端如何使用该缓冲区。在 X 术语中,这意味着所有应用程序都可以直接呈现——绘图请求不需要通过服务器。

Wayland 所做的唯一渲染是将客户端的缓冲区复制到屏幕上。

就好处而言,Wayland 比 X 复杂得多,这应该使它更容易维护——尽管这种简单性的一部分来自于将复杂性(例如:如何实际绘制该缓冲区,网络透明度)推到其他层堆。通过让客户负责他们的所有渲染,Wayland 使客户可以更聪明地处理双缓冲之类的事情。

除了图形之外还有其他好处。例如,沙盒应用程序要容易得多。

  • 我还通过 Wayland 和 systemd 获得了 Microsoft wibes。不,这不是一件好事。他们打破了基本的软件开发规则。在 systemd 中只是因为它对 systemd 的开发人员来说更容易。在wayland,因为他们想要更快的游戏(?)和渲染,并因此抛出很多好东西。 (5认同)
  • 听起来像微软的DirectX之类的东西? (3认同)
  • 我使用核心 X11 协议绘图 API,因为它比 XRender 更快。 (3认同)

TGM*_*TGM 19

我眼中的主要区别是 Wayland 比 X-Server 更接近内核。随着图形驱动程序从 X 转移到内核(称为内核模式设置,KMS),Wayland 计划使用这个新功能来取代 X。您可能会看到以下内容……

比 X 占用更少的空间 - 因为显示是由内核处理的,Wayland 不需要实现那么多就可以使用。这是双向的,因为我怀疑 X 转发(查看另一台 PC 上的一个屏幕)可能会随着 X 消失。

KMS 功能:能够在不重启 X 服务器的情况下更改屏幕分辨率(虽然我相信这在 X 中已经修复了一段时间,至少对于 nvidia 而言),如果您正在使用英特尔芯片组的内核恐慌调试控制台(转向 nouveau)诸如此类的事情。

如果我错了,有人可以纠正我吗?

  • KMS & GEM 不会将图形驱动程序移动到内核,只是将一些小部分移动到内核(直接与硬件对话并需要在内核中的位,以便不同的驱动程序可以共存,例如写入 I/O 端口和管理内存)。KMS 和 GEM 如今已被 X 使用,至少用于现代开源驱动程序(intel、radeon、nouveau)。顺便说一句:我严重怀疑将整个图形驱动程序移动到内核是否会被 Linus 接受......;) (4认同)
  • 哦,KMS 从来不需要改变屏幕分辨率(自从我 10 多年前使用 X 以来一直有可能),但它允许不同的驱动程序(例如控制台帧缓冲区驱动程序、X 驱动程序和现在的 Wayland 驱动程序)更容易合作。在过去,对于他们中的每一个来说,图形硬件在某个时间点处于什么“状态”并不总是很明显,并且使用了大量猜测或依赖于驱动程序的专有解决方法。 (4认同)
  • RandR 扩展使您无需重新启动 X 服务器即可更改屏幕分辨率。 (3认同)

Chr*_*jer 17

所有其他帖子都强调了 Wayland 的好处,但不仅如此。X 相对于 Wayland 的最大优势在于 X 在网络上工作。X 是网络透明的,您可以在终端上显示窗口,或使用 XDMCP 显示一个完整的会话,而实际程序在另一台通常更强大的机器上运行。有了像 Wayland 这样的东西,网络透明度的想法就消失了。也许这些天对于快速网络和其他协议(如 VNC 和 RDP)的要求并不高,只是想我会为了完整性而提及它。

  • 并且屏幕共享在 Wayland 中不再适用于 Zoom、Skype、Webex 等主要工具(尽管也许它们可以解决?) (3认同)

小智 7

简而言之,希望获得更好的图形(错误更少、速度更快、更易于使用)。甚至有一天,以前不可能的事情也可能成为可能。我个人认为这至少会让事情变得有趣,因为竞争总是如此。


Nic*_*mer 7

在日常工作中,任何人都会很快注意到两件小事:

  • Wayland 取消了 X11 中被认为难以修复的剪纸问题。一个著名的例子:在菜单打开或锁定屏幕打开时使用功能键(扬声器音量、显示屏亮度等)。
  • Wayland 更擅长输入设备。其一,配置触摸板有更多选项,包括持续点击设置。

  • 如果程序因某种原因被锁定,Wayland 的情况会更糟。拥有不同的wm是一件好事。我定期(每天)使用网络 X11。某些程序在 Wayland 中停止工作(我使用 Ubuntu 18.04) (2认同)