这更多的是 KDE 而不是 Ubuntu 的问题,但是...
我看到屏幕上出现了明显的撕裂。KDE 合成、Firefox 中的 Flash 视频和 kpat 等简单游戏都是垂直同步的,但是在 Steam 游戏和电影中有明显的持续撕裂。如果我关闭所有垂直同步,撕裂会加倍明显,因此这不仅仅是 GPU 忽略设置。
最让我烦恼的是,我在许多不同的设置上都遇到了同样的问题。每个人都有这个问题,却没有人关心吗?
我的设置
- Kubuntu(最近几个版本)或 OpenSuse 或 Gentoo。
- KDE 4.12 - 4.13
- Nvidia GTX 260、570、TITAN,不同的驱动程序版本。
- 我使用 mplayer2 后端在 SMplayer 中观看电影。VLC 也有同样的问题。
我尝试了什么(但这没有帮助)
- 在不同的配置中打开和关闭 nvidia-settings 和 KDE 桌面效果中的 Vsync 设置。
- 切换 Mplayer 输出和
direct rendering
设置。 - 在 nvidia-settings 中关闭自适应电源模式。
- 关闭合成
- 更改显示器 Hz
- 从 CLI 运行 mplayer
- 举行仪式和祭祀
什么有效(但这不是可接受的解决方案)
- 禁用 KDE,并在纯 X 会话中运行 Mplayer
- 切换到 nouveau 并关闭合成并以全屏方式打开视频 - 没有任何部分它仍然撕裂。
请指教。
更新 1我发现如果我进入桌面效果-高级并更改任何有价值的东西(OpenGL 版本、缩放算法)并按应用,撕裂就会消失,直到重新启动。但是,没有设置可以一劳永逸地解决这个问题。重新启动后,我必须再次更改某些内容。我想把这归咎于错误就足够了,而不是我的错误,所以我会提交错误报告。
答案1
问题的根源(当然)是 nvidia 驱动程序故障。解决方案很简单。添加环境变量:
export __GL_YIELD="USLEEP"
export __GL_THREADED_OPTIMIZATIONS=1
在 X 启动之前的某个地方。整个系统/etc/profile/
运行良好。
答案2
解决这个恼人问题的简单指南:)
创建文件:
/etc/profile.d/Tearing.sh
插入此代码:
export __GL_YIELD="USLEEP"
然后使用以下命令使其可执行:
chmod +x /etc/profile.d/Tearing.sh
完成后,重新启动或按 ctrl + alt + F2,登录并运行,
sudo service lightdm restart
或者重新启动显示管理器。
GL_YIELD 对我来说很有用,现在垂直同步似乎正常工作。
(https://www.kubuntuforums.net/showthread.php?63946-No-vertical-sync-with-NVIDIA&highlight=tearing)
答案3
我尝试了所有的技巧,但在 Ubuntu 15.04(以及 xorg-edgers 和 nvidia-355)上没有一个能解决,直到我遇到了nvidia archlinux 页面。
测试:
nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
为了使更改永久生效,您需要将以下行添加到“屏幕”Xorg 配置文件的部分,例如/etc/X11/xorg.conf.d/20-nvidia.conf
Option "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
答案4
删除 NVIDIA 驱动程序对我来说解决了问题。对于 XFCE,唯一有帮助的是替换窗口管理器。