![UBUNTU 19.04 屏幕撕裂 PC](https://linux22.com/image/1015024/UBUNTU%2019.04%20%E5%B1%8F%E5%B9%95%E6%92%95%E8%A3%82%20PC.png)
我在我的电脑上安装了 Ubuntu 19.04:
- 英特尔 i7 8700k
- NVIDIA 技嘉 GeForce GTX 1080 Ti AORUS Waterforce @NVIDIA-driver-418
- 显示器华硕 PB287Q @3840x2160 像素
在刚开始使用 Ubuntu 时,我就注意到了这种恼人的屏幕撕裂现象。我以为只有 Firefox 才会出现这种情况,但当我摇晃窗口时,我看到一条水平线将窗口分成两部分(撕裂)。这种情况发生在任何类型的窗口或应用程序中。我读了很多资料,到目前为止,这是我所做的:
- 使能够分数缩放,因为我无法在 100% 时读取,而在 200% 时它又让我崩溃了。
我将其设置为 150%:gsettings set org.gnome.mutter experimental-features "['x11-randr-fractional-scaling']"
- 将 ForceFullCompositionPipeline 设置为 On。首先在 nvidia-settings 中,然后在 中
/usr/share/X11/xorg.conf.d/10-nvidia.conf
,因为我注意到重新启动或关机将重置该设置。
输出nvidia-settings -q CurrentMetaMode
:
Attribute 'CurrentMetaMode' (EST:1.0): id=50, switchable=yes, source=RandR ::
DPY-7: nvidia-auto-select @5120x2880 +0+0
{Transform=(1.333328,0.000000,0.000000,0.000000,1.333328,0.000000,0.000000,0.
000000,1.000000), ViewPortIn=5120x2880, ViewPortOut=3840x2160+0+0,
ResamplingMethod=Bilinear, ForceCompositionPipeline=On,
ForceFullCompositionPipeline=On}
我附上了我的10-nvidia.conf
。很奇怪的是,如果我启动它,撕裂会立即得到修复,但即使我设置了,我也需要不时重新应用它10-nvidia.conf
:
sudo nvidia-settings --assign CurrentMetaMode="nvidia-auto-select
@5120x2880 +0+0 { ViewPortIn=5120x2880, ViewPortOut=3840x2160+0+0,
ResamplingMethod=Bilinear, ForceCompositionPipeline=On,
ForceFullCompositionPipeline=On }"
答案1
我想我终于找到了自己的解决方案。通过以下步骤,我能够获得无撕裂的体验,并设置我的 HiDPI 显示器以获取可读的内容。我想避免在设置和显示设备下使用 GNOME 缩放模式(请参阅下面 GNOME 和 NVIDIA 之间的问题),并通过正确设置 DPI 来解决缩放问题。它没有像我想象的那样工作(DPI 缩放、撕裂已修复),但我期待您的反馈。也许它最终可以工作。
我必须处理以下问题:
- 安装 Ubuntu 后,我无法在显示器上阅读任何内容。使用 28 英寸的 4k 显示器需要 HiDPI 设置,而无需使用双筒望远镜。
- 在 Gnome 设置菜单中将缩放比例设置为 200 太多了,而 100 是不可接受的。分数缩放还不错。
- 接下来就是撕裂。一切都感觉不连贯,所有窗户都有一条水平的厄运线。所以我设置了一个
10-nvidia.conf
。 10-nvidia.conf
仅部分修复了该问题,因为有时重启或关闭后撕裂现象又会再次出现。- Gnome Scaling 和 NVIDIA 驱动程序互相干扰。
- 我注意到当我打开 nvidia-settings 时,我的屏幕变黑了几秒钟。
- Flameshot(截图应用程序)无法正常工作,因为当我尝试截图时屏幕变黑了。按 Esc 结束“截图”操作后屏幕再次显示。
- 我想为我的显示器使用 icc 颜色配置文件,但有时可以应用,有时不行。我注意到颜色略有变化。
- 当我在 Gnome 设置中应用缩放时,我注意到 nvidia-settings 中的 ViewPortIn 更改为 5120x2880,即使我有 3840x2160。这与 Gnome 中的 DPI 缩放方式有关(如果我错了,请纠正我)。有趣的是,如果我将 ViewPortIn 更改为 3840x2160(等于缩放 100%),Flameshot 就会再次运行。
- 夜间模式不起作用,一旦激活它就会被禁用,只需启动文件管理器即可,或者由于其他随机原因发生这种情况。
然而,考虑到所有这些问题,我想将一切恢复为默认设置并重新开始。
- 我删除了
10-nvidia.conf
除初始之外的所有内容Section "OutputClass"
- 我执行
sudo nvidia-settings
导航到“X 服务器显示配置”,选择“配置”并选择“禁用”。我确认了对话框并选择尽可能地应用。nvidia-settings
之后我做了同样的事情(关闭 NVIDIA 设置后以非 root 身份执行),以确保安全。 - 回到 Gnome 设置,我选择了 100% 的缩放比例并执行
gsettings reset org.gnome.mutter experimental-features
禁用分数缩放。
重新启动并进行几次 Google 请求之后,我想要一个可以避免 Gnome 缩放并在 NVIDIA 驱动程序中执行所有 DPI 操作的设置。
设置 10-nvidia.conf:我通过打开-> “X 服务器显示配置” -> “保存到 X 配置文件” -> “显示预览...” 并复制所有内容,
获得了该文件的基本信息。我将“显示预览...”的部分 粘贴到现有内容中。nvidia-settings
sudo gedit /usr/share/X11/xorg.conf.d/10-nvidia.conf
请勿更换。
然后我添加/编辑了以下内容(不要复制和粘贴我的文件:):
- 要真正解决撕裂问题,这就是魔法[参考]:
Option "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On}"
- 然后我想设置 DPI 缩放:
Option "DPI" "161 x 158"
我认为如果我正确设置它,我将通过执行以下操作获得正确的 DPI 缩放:- 很有可能
xdpyinfo | grep -B2 resolution
会输出resolution: 96x96 dots per inch
,但这实际上不是正确的 DPI。whtyger 的我计算了我的 DPI:randr | grep -w connected DP-4 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 621mm x 341mm
- 计算结果:
x = 62,1 厘米
y = 34,1 厘米
x = 62,1 厘米 / 2,54 = 24,4488 英寸尺寸
y = 34,1 厘米 / 2,54 = 13,4252 英寸尺寸
x = 3860 像素 / 24,4 英寸 = 158,1972 DPI
y = 2160 像素 / 13,4 英寸 = 161,1940 DPI - 不幸的是,要么是我忘记了什么,要么是我应用正确 DPI 缩放的方法不起作用。不过,我还是得眯起眼睛(小字体)。
- 我执行了
xrandr --dpi 144
将 DPI 缩放比例设置为 144% 的操作。PC 在执行该命令后没有反应。Strg + Alt + F1 将我带到登录屏幕,我能够再次登录,此时我的 DPI 为 144。但是它并没有改变 UI 元素的缩放比例。 - 我仍然不想使用 GNOME 缩放,所以我使用了GNOME 调整工具增加字体缩放比例。使用公式
desired_DPI / 96
我得到了 1.50 缩放系数 (144 DPI / 96)。现在大多数桌面和应用程序元素都可读,我避免在显示设备下使用 GNOME 缩放模式。 - 我添加了
Option "Composite" "Enable"
并希望获得更好的性能,而不会出现撕裂。使用魔法修复后,我没有注意到任何更好的性能,因为撕裂问题已经用ForceCompositionPipeline
- 我
sudo nvidia-settings
导航到“OpenGL 设置”并禁用“同步到 VBlank”并激活“允许翻转”。
- 很有可能
最后的想法:
总体感觉好多了,撕裂现象消失了。但是我仍然不敢相信 60 Hz 竟然这么慢。所以当我疯狂摇晃窗户时,我仍然看到窗户上有很多重影。我可以再次使用 Flameshot 了!如果我使用夜间模式并启动 nvidia-settings,夜间模式会结束,因为有东西干扰了该模式。幸运的是,Windows 也在进行同样的战斗。
我希望我没有写太多,并且我可以帮助一个人解决他的问题。我期待反馈。
参考:
如何在 Ubuntu 19.04 中启用分数缩放
如何在 Linux 中处理高分辨率屏幕
如何查找和更改屏幕 DPI?
GNOME 调整工具
高清晰度电视
Nvidia 专有驱动程序 DPI 设置
韓國
使用较新的 nVidia GPU 时出现屏幕撕裂
10-nvidia.conf——请勿复制/粘贴:
Section "OutputClass"
Identifier "nvidia"
MatchDriver "nvidia-drm"
Driver "nvidia"
Option "AllowEmptyInitialConfiguration"
ModulePath "/usr/lib/x86_64-linux-gnu/nvidia-418/xorg"
EndSection
Section "Module"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Ancor Communications Inc ASUS PB287Q"
HorizSync 24.0 - 160.0
VertRefresh 30.0 - 80.0
Option "DPMS"
Option "DPI" "161 x 158"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 1080 Ti"
Option "UseEdidDpi" "False"
Option "DPI" "161 x 158"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-7"
Option "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On}"
Option "SLI" "Off"
Option "MultiGPU" "Off"
Option "BaseMosaic" "off"
SubSection "Display"
Depth 24
Modes "3840x2160"
EndSubSection
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection