[software development] Wayland比X11的优势
Tofloor
poster avatar
192******21
deepin
2023-08-11 23:23
Author

特点介绍

Wayland复用了所有Linux内核的图形、输入输出技术:KMS、evdev,因此已支持的驱动可以直接拿来用。^[4]^

Wayland没有传统的Server/Client的模式,取而代之的是:Compositor/Client,这不仅仅是换一个名称而已,后面会讲到具体区别。^[4]^

原理

内核收到了鼠标发出的信息,经过处理后转发到了Wayland Compositor,就像之前发往X Server一样。

Compositor收到消息后,立马能知道哪个窗口该收到这个消息,因为它就是总控制中心,它掌握窗口的层级关系、动画效果,因此它知道该坐标产生的鼠标点击信息应该发送给谁,就这样,Compositor将鼠标的点击信息发送给了Firefox

Firefox收到了消息,这时如果是在X Window下的话,Firefox会向X Server请求绘制按钮被按下的效果。然而在Wayland里,Firefox可以自行进行绘制而不需要再请求Compositor的许可。这就是传说中的:直接渲染机制(Direct Render)。Wayland不管Client的绘制工作,整个过程变得十分简单而且高效。当Firefox自行完成了按钮状态的绘制后,它只需要通知Compositor,某块区域已经被更新了。

Compositor收到Firefox发来的信息后,再重新合成那块更新的区域,将最终桌面效果呈现给用户。这个过程主要是跟内核、显卡驱动打交道了。 ^[4]^

功能

Wayland的核心协议已经实现的差不多了,它充分利用了Linux内核的KMS、GEM、DRM等技术,另外,它默认是支持3D加速的,也就是通过OpenGL ES进行图形的合成——光是这一点,X Window又要泪奔了。

使用OpenGL ES这个子集而非OpenGL,有多少项目是用OpenGL ES的:AndroidiOSWebOSWebGL,几乎所有主流的的移动操作系统、浏览器3D的实现,都选用了精简、高效的OpenGL ES。

Display Server、Input/Output,跟iOS相比,在触控的响应上是有差距的。未来,对OpenGL ES有着良好支持的Wayland,也许会给这些基于Linux内核的移动操作系统发力。

这时问题就来了,因为Wayland所使用的,都是当前Linux下最新潮的图形技术。所以理所当然的,在驱动这一层面会有一些厂商跟不上。

比如nVIDIA,KMS技术都出来一年多了,Intel的全部显卡和AMD部分显卡已经获得支持了,可nVIDIA压根就没有兴趣搞这个,以致于开源社区利用反向工程,通过“Nouveau”项目让nVIDIA支持了KMS,当然比较遗憾的是,性能跟官方闭源的驱动是差了相当的距离。

基于Wayland的Linux桌面/移动要真正得到应用,驱动这一关是一定要解决的。不过正所谓潮流不可档,nVIDIA迟早会支持这项技术的。

等到驱动完全不成问题了,Wayland还需要一个全功能的“Compositor”,这个角色,就由Clutter/Mutter、 Compiz、KWin等当前主流的窗口管理器来扮演的,相信只要通过简单的修改,这些合成窗口管理器很快地就能转变成一个全能的“Wayland Compositor”。

现在新出的英伟达显卡有些已经支持了wayland了。

Reply Favorite View the author
All Replies
192******21
deepin
2023-08-11 23:26
#1

wayland协议在显示画面儿变化的时候,比X11少了一些和上层的通信,可以有程序直接完成。另外,是画面哪里变化只变化那一部分的画面,不是改动那个屏幕、或整个画面。这些都是可以减少CPU负担的。

所以Linux程序尽量原生支持wayland协议。

Reply View the author
deepin_xiaoqian
deepin testing team
2023-08-11 23:29
#2

like 感谢分享

Reply View the author
Jokul
deepin
2023-08-12 01:48
#3

可是请问大佬,wayland技术相对比x11,在视觉变化上到底给了用户什么样的改变呢?

Reply View the author
sammy-621
deepin
2023-08-12 01:50
#4
Jokul

可是请问大佬,wayland技术相对比x11,在视觉变化上到底给了用户什么样的改变呢?

你可以在deepin中切换一下这两种模式,Wayland下的窗口缩放动画更显流程

Reply View the author
Jokul
deepin
2023-08-12 01:54
#5
sammy-621

你可以在deepin中切换一下这两种模式,Wayland下的窗口缩放动画更显流程

这个目前看不出来吧,因为两种模式下的缩放动画效果不一样,得需要同效果对比画面帧数才能辨别流畅度

Reply View the author
192******21
deepin
2023-08-12 02:24
#6
Jokul

可是请问大佬,wayland技术相对比x11,在视觉变化上到底给了用户什么样的改变呢?

提升的是速度啊。画面显示,局部绘制,少了通信传递次数请求与批准。对CPU来说省一点是一点。剩下来就是节省的时间。体现在速度快一点!

运行出来结果显示是一样的。只是过程不一样。省了一些步骤。

Reply View the author
北冥夜未央
deepin
Ecological co-builder
2023-08-12 05:24
#7

每个新技术出来都会吹自己多牛,而我们需要的是哪个更稳定,哪个更好用。

Reply View the author
落日
deepin
2023-08-12 08:52
#8

仍然是个玩具,我觉得还得过个2-3年才能让大部分普通用户正常使用

Reply View the author
mozixun
deepin
2023-08-12 17:41
#9
北冥夜未央

每个新技术出来都会吹自己多牛,而我们需要的是哪个更稳定,哪个更好用。

这样吧,只追求这些,DOS完全够你用

Reply View the author
silentdoer
deepin
2023-08-14 06:40
#10

wayland安全性是个坑,我觉得还不如做成某个应用申请获取其他窗口信息需要输入密码,然后有,仅在程序使用时有权限,仅这一次有权限,永远有权限等等,而不是要求就是无法获取其他窗口的信息,或者得用很复杂的代码实现

Reply View the author
jalawov
deepin
2023-08-14 07:34
#11

X11实际很不安全,做一个恶意程序监听其他窗口中用户的键盘输入事件都完全做得到,可能只不过因为linux用户少所以没有出现特别严重的安全事故。wayland就彻底解决了这个问题,不过导致很多东西全都得重新适配。

Reply View the author
192******21
deepin
2023-08-14 16:53
#12
silentdoer

wayland安全性是个坑,我觉得还不如做成某个应用申请获取其他窗口信息需要输入密码,然后有,仅在程序使用时有权限,仅这一次有权限,永远有权限等等,而不是要求就是无法获取其他窗口的信息,或者得用很复杂的代码实现

你说的这个和他有什么关系?威兰德这是一个显示协议。只负责显示。这安全方面是操作系统应该添加的功能。

Reply View the author
silentdoer
deepin
2023-08-22 15:47
#13
192******21

你说的这个和他有什么关系?威兰德这是一个显示协议。只负责显示。这安全方面是操作系统应该添加的功能。

大哥,不懂别乱说OK?wayland协议为了安全性不允许应用a获取应用b的窗口信息导致很多特殊功能用不了

Reply View the author