UBUNTU 19.04 撕屏电脑

Eri*_*ner 5 nvidia xorg tearing drivers 19.04

我在我的 PC 上安装了 Ubuntu 19.04:

  • 英特尔 i7 8700k
  • NVIDIA 技嘉 GeForce GTX 1080 Ti AORUS Waterforce @NVIDIA-driver-418
  • 显示器 ASUS PB287Q @3840x2160 像素

在开始使用 Ubuntu 时,我注意到了这种烦人的屏幕撕裂。我以为这只是在 Firefox 中,但是当我摇动窗口时,我看到一条水平线将窗口分成两部分(撕裂)。它发生在各种窗口或应用程序中。我读了很多,这就是我到目前为止所做的:

  • 启用分数缩放,因为我无法以 100% 的速度读取,而在 200% 时它会杀死我。
    我将其设置为 150%:gsettings set org.gnome.mutter experimental-features "['x11-randr-fractional-scaling']"
  • 强制FullCompositionPipeline 开启。首先在 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}
Run Code Online (Sandbox Code Playgroud)

我附上了我的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 }"
Run Code Online (Sandbox Code Playgroud)

Eri*_*ner 3

我想我终于为自己找到了解决方案。通过以下步骤,我能够获得无撕裂的体验,并设置我的 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 设置中的 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
我通过打开nvidia-settings->“X 服务器显示配置”->“保存到 X 配置文件”->“显示预览...”并复制所有内容来了解​​该文件的基础知识。
我将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 cm
      y = 34,1 cm

      x = 62,1 cm / 2,54 = 24,4488 尺寸(英寸)
      y = 34,1 cm / 2,54 = 13,4252 尺寸(英寸)

      x = 3860 像素/24,4 英寸 = 158,1972 DPI
      y = 2160 像素/13,4 英寸 = 161,1940 DPI
    • 不幸的是,要么我忘记了什么,要么我应用适当 DPI 缩放的方法不起作用。但我还是得眯起眼睛(小字体)。
    • 我将xrandr --dpi 144DPI 缩放设置为 144%。命令发出后,PC 没有反应。Strg + Alt + F1 将我带到登录屏幕,我能够再次登录,并获得 144 DPI。但是它并没有改变 UI 元素的缩放因子。
    • 我仍然不想使用 GNOME 缩放,因此我使用GNOME Tweak Tool来增加字体缩放。通过公式 desired_DPI / 96,我得到了 1.50 缩放因子 (144 DPI / 96)。大多数桌面和应用程序元素现在都是可读的,并且我避免在显示设备下使用 GNOME 缩放模式。
    • 我补充道Option "Composite" "Enable",希望能有更好的表现,不撕裂。魔法修复到位后,我没有注意到任何更好的性能,因为撕裂已经修复了ForceCompositionPipeline
    • sudo nvidia-settings导航到“OpenGL 设置”并禁用“同步到 VBlank”并激活“允许翻转”。


最后的想法:

整体感觉好多了,撕裂死了。但我仍然不敢相信 60 Hz 这么慢。所以当我疯狂地摇晃窗户时,我仍然看到窗户上有很多重影。我又可以使用火焰射击了!如果我使用夜间模式并启动 nvidia-settings,夜间模式会因某些因素干扰该模式而结束。幸运的是,Windows 也在进行同样的战斗。
我希望我没有写太多,并且可以帮助其中一个人解决他的问题。我期待反馈。


参考文献:
如何在 Ubuntu 19.04 中启用分数缩放
如何在 Linux 中处理 Hi-Dpi 屏幕
如何查找和更改屏幕 DPI?
GNOME 调整工具
HiDPI
Nvidia 专有驱动程序 DPI 设置
Xorg
使用较新的 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
Run Code Online (Sandbox Code Playgroud)