我之所以这么说是因为我在4台不同的计算机上使用了5种不同的发行版,这些显示器具有各种显示器和Nvidia / AMD / ATI / Intel显卡;每次都有轻微的视频撕裂问题。
这是一个大问题,尤其是因为即使Windows XP在现代硬件上也没有这些问题。如果有人要使用Linux做任何事情,为什么他们要在进行非CLI的任何事情时都出现不断出现的缺陷?
我想很少有开发人员知道此问题或足够关心以至于修理它。我已经尝试了几乎所有的合成器,通常他们能做的最好的事情就是将问题最小化,但不能消除。它不应该像与监视器的刷新率同步一样简单吗? OSS社区中是否存在某种阻止任何人提交可解决此问题的代码的政策?
我过去每次在此问题上寻求帮助时,要么被视为边缘案例(我发现很难相信这是我已经复制了问题的次数),或者我得到了最大程度地减少撕裂的潜在解决方案。
#1 楼
这完全是由于X服务器已过时,不适用于当今的图形硬件,并且基本上所有直接的视频卡通信都作为对古老的core肿核心的扩展(“补丁”)来完成的。 X服务器在用户渲染窗口和显示窗口的屏幕之间没有提供内置的同步方法,因此内容在渲染过程中发生了变化。这是X服务器的一个众所周知的问题(它具有许多服务器功能和过时的整个模型-子窗口中的事件处理,关于窗口的元数据,用于直接绘制的图形基元...)。窗口小部件工具箱大多想掩盖所有这些,但是由于没有机制可以解决,因此撕裂仍然是一个问题。当您有多个需要不同驱动程序的卡时,还会出现其他问题,而且,opengl库对xlib具有硬连接依赖性,因此,如果不经历X,就无法真正独立使用它。Wayland试图替换X有点不热衷,它在其核心中支持谐的vsync同步,并且被宣传为每个帧都完全完美。
如果您快速搜索“ wayland video tearing”,您会找到有关所有内容的更多信息。
评论
+1表示“ X是问题,请看Wayland。”死得很严重,这是正确的答案。
– HalosGhost
2015年2月4日,12:48
@HalosGhost旅途中的福音派布道:)仍然没有网络会话支持吗?
–卡加里山
2015年2月4日在14:13
@ kagali-san我不是说Wayland是完美的(不是)。但这绝对比X好。:)
– HalosGhost
2015年2月4日14:35
@ kagali-san:如果您发现与视频撕裂有关的问题与某种程度上相关,那么韦斯顿仅在一年前就将其RDP后端进行了合并。
–user1686
2015年2月4日在22:36
@orion:非常感谢您,这一页现在成为Wayland视频撕裂的第一名:P
– Tobia Tesan
16 Sep 4'在10:38
#2 楼
如果您使用的是> = 365.20的nvidia驱动程序,请尝试在nvidia-settings
中启用“强制完全合成管线”选项。评论
nVidia Quadro在Lenovo W520,Fedora 25上运行,此方法:)
–耶瑟
16 Dec 29'在3:32
如果没有这样的选项,请单击窗口底部的“高级设置”,它将显示出来。为什么默认情况下未启用此“完整组合管道”?
–Rast
17-2-4在18:22
@Rast因为它曾经有一些性能问题。
–俄罗斯
17年4月4日在16:27
顺便说一句,看来至少英特尔驱动程序也具有TearFree选项,您可以将其放入相应的“设备”部分。我刚刚尝试过,它的结果与nvidia的Full Composition Pipeline非常相似。
–俄罗斯
18年8月7日在20:29
我似乎无法获得重新启动时保存的设置,我尝试创建〜/ .xinitrc文件并将“ nvidia-settings --load-config-only&。/ etc / X11 / xinit / xinitrc”放入其中,但是那似乎没有用
–碎片炖
19年2月5日在3:46
#3 楼
屏幕撕裂的出现主要是由于两个原因-驱动程序还不存在,以及缺少与某些窗口管理器的vsync。对于驱动程序,免费和专有驱动程序均支持免费共享合成(nvidia和两者)。请注意,例如在催化剂(
fglrx
)中启用无撕裂桌面可能会导致帧丢失和滞后,因此通常默认情况下将其禁用。至于开放式驱动程序,默认情况下应启用vsync。因此,可以通过尝试不同的驱动程序并对其进行配置来解决屏幕撕裂问题。对于窗口管理器,众所周知,Openbox,Awesome和其他轻量级WMS不支持无撕裂。 XFCE(具体来说为xfwm)已在最新版本中对其进行了修复,现在4.11 / 12具有Vsync。主要的桌面环境也不会出现撕裂问题,包括GNOME,KDE,Unity和Cinnamon。
如果仍然遇到屏幕撕裂,您可以选择尝试使用其他合成管理器,例如Compton或Kwin。 Kwin是KDE的窗口管理器,我有在XFCE中使用kwin的经验,当时它不支持vsync,并且运行得非常好。
所以这里的解决方案是实验,将一种组合分解驱动程序/ wm可以在另一个中工作。我相信,随着开源驱动程序变得越来越先进,并且转向Wayland可能会摆脱Xorg的旧问题,情况将很快得到改善。
评论
并不是的。与NVidia或Intel合作时,KDE(与Kwin或其他作曲家一起)仍然流着眼泪。
–伊凡
2015年2月4日,10:56
Openbox等可以正常工作-您只需要运行一个单独的合成器即可,例如康普顿的作品很棒。
–wingedsubmariner
2015年2月5日,下午3:56
@wingedsubmariner,当您指的是openbox时,您还指的是fluxbox吗?
–nass
15年4月24日在10:16
同样,非常有用的提示您注意不同窗口环境中WM的状态。
–nass
15年4月24日在10:18
@nass绝对。窗口管理器绝不是一个限制因素。
–wingedsubmariner
15年4月28日在20:43
#4 楼
我在这里流泪了,现在解决了。阅读了有关Xorg服务器工作原理的(精彩的解释)后,我意识到X服务器可以在任意随机时间将窗口更新直接绘制到存储卡上除非您使用启用了合成的窗口管理器。
启用合成后,窗口管理器将来自不同窗口内存缓冲区的所有更改汇总在一起,为整个屏幕创建结果图像并将其转储到显示器一张卡即可使用。
大多数现代发行版都有一个合成窗口管理器。对于KDE,KWin,对Gnome的Mutter,对肉桂的Muffin,对Mate的Marco,对XFCE的xfwm,等等。但是可以禁用合成以节省资源。
在我的情况下,在KDE4中禁用了合成。一旦启用,撕裂就消失了。编辑:我还需要在KWin选项上将VSync策略从“自动”更改为“重用”屏幕内容,以消除撕裂,正如在此kwin特定的错误报告中所述。
驱动程序选项也可以一个因素。就我而言,默认选项可以正常工作。 Arch Wiki拥有有关不同显示卡(例如Intel卡或NVIDIA卡)的选项的出色文档。
要检查当前xorg配置中是否启用了选项,可以检查日志。例如,要检查是否启用了DRI:
cat /var/log/Xorg.0.log | grep DRI
评论
在XFCE(在Xubuntu 16.04中)上,默认情况下启用了合成,但未同步到垂直空白。使用xfwm4-tweaks-settings命令显示tweaker应用程序,在“合成器”选项卡上,您可以找到上述选项。启用它有很大的不同,可以在此处进行检查:vsynctester.com/index.html(在显示动画时打开/关闭该功能)。它并不完美,虽然有一些丢失的帧,但是比关闭时好得多。
– karatedog
16-10-31在12:17
这里不需要猫。 grep接受文件名。 grep DRI /var/log/Xorg.0.log。
–脑图
20 Mar 30'2:00 at 2:00
#5 楼
解决方案在这里:Linux Mint 17.3 MATE现在随Compton一起提供。只需转到
Desktop Settings
-> Windows
-> Window Manager
并选择Metacity + Compton
。就是这样。我有AMD视频卡,它可以直接用于开源驱动程序。
对于专有AMD驱动程序,当HTML5视频最大化到全屏时,您可能会看到覆盖整个屏幕的蓝色。要解决此问题,请创建并
chmod +x
以下脚本:#!/bin/bash
killall compton 2> /dev/null
compton -b --unredir-if-possible
每当您重新启动系统时都运行它,但不要尝试将其添加到
Startup Applications
中-可能会由于某种原因中断启动。#6 楼
在Peppermint Linux中,转到“首选项”>“ Peppermint控制中心”,选择“桌面效果”并启用“启用桌面效果”和“将图形同步到垂直空白”。#7 楼
我正在使用Linux Mint XFCE,这个问题使我很沮丧。我找到了带有英特尔集成显卡的笔记本电脑解决方案,它解决了撕裂问题。对于使用NVIDIA卡的台式机,这种技巧无法正常工作。但是我只是找到了罪魁祸首。禁用窗口合成后,我立即感觉到了性能提升。以下是如何执行此操作的方法:
转到“所有设置” /“窗口管理器”微调/“合成器”并禁用整个设置。
请记住,这是特定于发行版的,而我是XFCE的Mint,我不知道如何在其他发行版上找到类似的东西。
#8 楼
在具有Mate 1.20.1的Ubuntu 18.04下,设置以下内容后,我在https://www.vsynctester.com/上几乎没有看到vsync问题:控制面板> Mate调整> Windows>窗口管理:Marco(没有复合材料)
(AMD Radeon HD 6450)
评论
您没有提及您使用哪个DE。 KDE撕裂已经有一年左右了。一个人怎么容易复制这个问题?在Debian / Ubuntu / Mint计算机中?
该XKCD似乎非常适合这里...
我流泪的经历完全不同。我非常高兴在Linux上玩游戏和看电影。 Steam确实使Linux成为了出色游戏的可行平台。我最近一直在玩《巫师2》和《塔洛斯原理》,在大约50个小时的游戏中我还没有看到任何撕扯。 Nvidia卡带有Arch上的专有驱动程序。我同意Xen2050的观点,如果为您的构建提供了准确的规格,此问题将更有用。我并没有否认有问题,我只是有一个很好的经验。
使用Nvidia合成为我解决了这个问题,那是在2007年我以前使用Nvidia时。虽然不是全屏显示,因为全屏窗口关闭了合成器,它假定您将运行我认为的OpenGL游戏。使用Intel,您是否尝试过在X中设置“设备”部分的“ TearFree”“ true”选项?它使视频RAM使用量增加了一倍,但我认为它将起作用。