英特尔显卡的“TearFree”有什么缺点?

Eva*_*oll 9 xorg x11 intel-graphics

英特尔显卡有一个选项可以在 X11 下禁用屏幕撕裂。可以通过使用这样的节配置 xorg 来启用它,

Section "Device"
  Identifier  "Intel Graphics"
  Driver      "intel"
  Option      "TearFree" "true"
EndSection
Run Code Online (Sandbox Code Playgroud)

为什么默认情况下不启用?TearFree 选项的缺点是什么?

Ste*_*itt 10

这是在解决intel手册页

禁用或启用 TearFree 更新。此选项强制 X 在更新实际显示之前对后台缓冲区执行所有渲染。它需要一个与帧缓冲区大小相同的额外内存分配,偶尔需要额外的副本,并需要损坏跟踪。因此,启用 TearFree 需要更多内存且速度较慢(降低吞吐量)并引入少量输出延迟,但不应影响输入延迟。但是,屏幕更新与显示器的垂直刷新同步执行,以便在显示器开始刷新之前完成整个更新。那是只有一帧可见,防止两个可见且不同的帧之间出现难看的撕裂。请注意,这复制了合成经理应该做的事情,然而,TearFree 会将合成器更新(以及全屏游戏的更新)直接重定向到扫描输出,因此在合成情况下不会产生额外的开销。另请注意,并非所有合成管理器都能防止撕裂,如果输出旋转,则在未启用 TearFree 的情况下仍会出现撕裂。

总而言之,缺点是它需要更多内存,并且会降低吞吐量并增加延迟(除非已经有合成器或 vblank 同步全屏显示)。