我在上一篇说到,Wayland 下再也不会遇到撕裂了。后来群友说,这是 Intel 的 modesetting 驱动特有的问题。所以我又重新比较了一下。为了让事实说话,而不是靠很容易有偏见的主观感受,我使用 Sony Xperia XZ2 Compact 手机的「慢动作」功能,以 960fps 录制了不同情况下,火狐滚动同一页面的效果。不过视频我就不放了,上传费时又占地方。
首先是我长期使用的组合:X11 + Intel 集成显卡 + modesetting DDX,窗口管理器是 Awesome 3.5.9,混成器是 picom。这种情况下有非常严重的斜线撕裂,在画面内容变化大的时候(如无过渡切桌面、视频镜头转换、大幅度滚动页面)必现。撕裂的样子如下(「慢动作」的分辨率有限,亮度低是预期现象):
可以很清楚地看到,截图中的页面是由两帧的内容拼接而成的。而且左下的是后一帧,右上的是前一帧,我不知道为什么会是这样子。我记得以前它不会撕这么大条斜线的啊,是斜-水平-斜的样子。反正都很难受就是了。我以前以为这种撕裂是时不时出现的,但多次「慢动作」慢放表明,它发生的频繁度大大超出了我之前的感受。
这个组合还有个问题是:外接显示器时,鼠标会跟着画面的更新而闪烁。画面更新越多越频繁,它闪烁得越快,而且和更新的区域也有关系。因为眼睛总跟着鼠标跑,所以即使它大部分时候不影响定位,但对主观感受的伤害应该也挺大的。
然后 Wayland + Intel 集成显卡,混成器是 Wayfire。完全观察不到撕裂。鼠标光标也很稳定不闪。
X11 + Nvidia 独立显卡 + 官方闭源驱动。还是 Awesome + picom 的组合,输出还是经过 Intel 显卡。也完全观察不到撕裂。不过有个更严重的问题——我的外接显示器每十来秒会黑屏几秒。听说把显示器关掉重开就可以解决,不过我无意使用这个方案,就不理它了。除了我之前提到的容易崩溃之外(其实我也不知道现在它还崩不崩),这显卡不支持视频硬件加速。这意味着我根本没办法看 4k 视频。PS: 火狐的 WebRender 能正常自行启用。
X11 + Intel 集成显卡 + Nvidia PRIME Offloading。我只是好奇地试一试这个方案啦。以前这个方案里火狐没办法启用图形加速,只能用「basic」渲染器来着。现在火狐有了 Software WebRender,倒是也能比较好地跑起来了。依旧会撕裂,好像比用 Intel 显卡要好那么一点点?
然后对比一下水族馆的图形性能数据:
- X11 + Intel 显卡,30fps 左右。
- Wayland + Intel 显卡:接近 60fps。
- X11 + Nvidia 显卡:30-40ftps。
- X11 + PRIME,这个比较令我意外,竟然也在 30fps 上下。要知道这个是纯 CPU 实现的,没有 GPU 加速的呀。
其实 WebGL 我用得不多啦(Google 地图更常卡在网络 I/O 上而不是渲染上)。更多的是播放在线(YouTube)视频啦。
- X11 + Intel 显卡,1080p 60fps,GPU 用满,丢帧三分之一!4k 60fps 也差不多。原来重点不是分辨率(反正 GPU 的解码能力还没用满),重点是视频的帧率啊。
- Wayland + Intel 显卡,4k 60fps 都不怎么丢帧,更不说其它了。GPU 图形计算用到一半左右。
- 没有更多方案了。我这 CPU,软件解 4k 会卡成 PPT 的。
综上,Wayland 的表现是最好的!好吧虽然遇到了挺多问题的,不过我大概都能修或者绕过。虽然撕裂不全是 X11 的错,但是确实有客观证据证明它体验不好,不是 Wayfire 的特效太绚烂太怀旧让我偏心了~