最近发现使用 Nvidia 专有驱动时会有画面撕裂(但比 Nouveau 可以接受)。但是我用 VLC 看电影还有撕裂就忍不了了。
在 Arch Linux Wiki 的 NVIDIA/Troubleshooting 中介绍了画面撕裂的解决办法。据报道,启用 Full Composite Pipeline 可能会降低 OpenGL 的性能,和可能让 WebGL 出现问题。但我觉得还是看电影不撕裂更重要一点。:-p
解决方法
首先安装 nvidia-settings
,然后执行 nvidia-settings -query CurrentMetaMode
你会看到类似下面的内容:
Attribute 'CurrentMetaMode' (Goodspeed-PC:0.0): id=50, switchable=no,
source=nv-control :: DPY-0: nvidia-auto-select @1440x900 +800+0
{ViewPortIn=1440x900, ViewPortOut=1440x900+0+0},
DPY-2: nvidia-auto-select @800x1280 +0+0 {ViewPortIn=800x1280,
ViewPortOut=1280x800+0+0, Rotation=270}
注意里面的 source=nv-control ::
后面的东西,是我们想要的。
DPY-0: nvidia-auto-select @1440x900 +800+0 {ViewPortIn=1440x900, ViewPortOut=1440x900+0+0}
是我的第一块屏幕。
DPY-2: nvidia-auto-select @800x1280 +0+0 {ViewPortIn=800x1280, ViewPortOut=1280x800+0+0, Rotation=270}
是我的第二块屏幕。(如果你只有一块屏幕,大概不会有第二条)
我们需要在后面的花括号里面加上ForceFullCompositionPipeline = On
,看上去就像这样:{ ..., ForceFullCompositionPipeline=On }
。然后再用逗号把两个显示(如果有)拼起来,以上面的举例,修改后是这样的:
DPY-0: nvidia-auto-select @1440x900 +800+0 {ViewPortIn=1440x900, ViewPortOut=1440x900+0+0, ForceFullCompositionPipeline=On}, DPY-2: nvidia-auto-select @800x1280 +0+0 {ViewPortIn=800x1280, ViewPortOut=1280x800+0+0, Rotation=270, ForceFullCompositionPipeline=On}
然后执行 nvidia-settings --assign CurrentMetaMode="修改过的"
。这样,不出意料的话,就不会有画面撕裂了。
没有深度学习的需求用A卡再好不过了,至少可以用没有什么严重问题的开源驱动。