笔记本 用户,大多有一顆 Intel 的芯,但是为它安装了Linux的以后,在浏览网页或者拖动窗口的的时候会感觉到不平滑,边缘有时候会明显出现断开的锯齿.
波纹撕裂的原因:
首先能确定的一点就是显示器相对较弱,显卡的速度超过了显示器的最快刷新时间,在显示器只刷新了半幅画面的时候,显卡的下一帧数据已经到来,可怜的显示器开始用新一帧的画面数据刷新后半幅画面,这种不匹配造成了视觉看到时的不适应,轻者产生波纹,重者画面撕裂。
而解决这一问题的办法就是在显卡驱动中打开垂直同步的功能,让显卡等待显示器完整的画完一帧后,再送新的数据过去。
在Linux中显示器相关设置
早年间在CRT显示器的时代,错误的参数配置令一些没有保护电路的显示器冒烟.
- xrandr 命令可以检测到显示器支持的有效分辨率刷新率及当前状态
- cvt 命令可以查询指定分辨率有效的扫描频率
cvt 的结果推荐添加于 /etc/X11/xorg.conf.d/50-monitor.conf 中 如下:
主要是那行 Modeline
在Linux中显卡驱动相关配置
显示器的分辨率,刷新率准备好以后,下面就可以在 /etc/X11/xorg.conf.d/50-device.conf 中配置显卡。
比如:打开显卡驱动的 垂直同步 功能。
这部分的官方介绍在这里
当然也可以继续往下看
示例配置 /etc/X11/xorg.conf.d/50-device.conf
TearFree 和 Vsync 共同来完成这个垂直同步功能。
具体需要其它的参数选项,可以通过 man intel 来详细查看.
在 man intel 中我们可以看到 Option Vsync 的默认值为 true, 如果是这样可能问题出在了 Intel 显卡驱动的这一个环节.
- 显卡驱动默认没有打开 Vsync
- 显卡驱动的编译 configure 指定了关闭 Vsync 的参数
好了,问题的根源的就不多想了,有这些问题已经可以解决了.
最后的步骤
重启 X11 服务后, 再次拖动窗口或者打开firefox滚动网页时再也不会有裂痕了.问题完美解决.
结语
上面的流程适用于一切显卡显示器的配置,为啥以 Intel 为例,却不写 Nvidia 和 AMD 的显卡捏,原因是 Nvidia 有 G-SYNC; AMD 有 FreeSync 这两项技术显卡可控制显示器的刷新率与显卡相同,可大幅减少画面撕裂,且更流畅。
您的打赏是对我最大的鼓励!