UBUNTU 19.04 屏幕撕裂 PC

UBUNTU 19.04 屏幕撕裂 PC

我在我的电脑上安装了 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

相关内容