Intel 显卡有一个选项可以在 X11 下禁用屏幕撕裂。可以通过使用这样的节配置 xorg 来启用它,
Section "Device"
Identifier "Intel Graphics"
Driver "intel"
Option "TearFree" "true"
EndSection
为什么默认情况下不启用此功能? TearFree 选项有什么缺点?
答案1
这是在联机intel
帮助页:
禁用或启用 TearFree 更新。此选项强制 X 在更新实际显示之前对后台缓冲区执行所有渲染。它需要与帧缓冲区大小相同的额外内存分配,偶尔需要额外的副本,并且需要损坏跟踪。因此,启用 TearFree 需要更多内存,速度较慢(吞吐量降低),并且会引入少量输出延迟,但不会影响输入延迟。然而,对屏幕的更新随后与显示器的垂直刷新同步执行,使得整个更新在显示器开始刷新之前完成。也就是说只有一帧是可见的,防止了两个可见且不同的帧之间出现难看的撕裂。请注意,这复制了合成管理器应该执行的操作,但是 TearFree 会将合成器更新(以及全屏游戏的更新)直接重定向到扫描输出,因此在合成情况下不会产生额外的开销。另请注意,并非所有合成管理器都会防止撕裂,并且如果旋转输出,在未启用 TearFree 的情况下仍然会出现撕裂。
总而言之,缺点是它需要更多内存,并且会降低吞吐量并增加延迟(除非已经有合成器或 vblank 同步全屏显示)。