在 15.04 和 15.10 中使用 Nvidia 950M 时屏幕撕裂

在 15.04 和 15.10 中使用 Nvidia 950M 时屏幕撕裂

信息:华硕 fx550j 笔记本电脑,i7、8 GB RAM,15.04 x86_64 升级到 15.10。

lspci -k | grep -i nvidia

3D controller: NVIDIA Corporation GM107M [GeForce GTX 950M] (rev a2)
Kernel driver in use: nvidia

请参阅lspci-k | grep -i vga

VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)(无内核驱动程序)

消息 | grep -i nvidia

[    9.917116] [drm] Initialized nvidia-drm 0.0.0 20150116 for 0000:01:00.0 on minor 1
[    9.917118] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  355.11  Wed Aug 26 16:35:41 PDT 2015

从 Launchpad 图形驱动程序 PPA 安装的软件包 nvidia-355。由于我遇到了可怕的屏幕撕裂问题(移动桌面窗口、滚动应用程序和 Firefox 浏览器、VLC 中的视频断断续续,无论是否使用 compiz),我一直在做一些研究,但一无所获。我相信我在故障排除过程中挖掘出了一些可能有用的有趣信息。我在 openSUSE 中遇到并解决了使用 Nvidia 660 卡的台式电脑中的类似问题,方法是包括

Option "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

在 xorg.conf 中。稍后在同一台桌面上安装 Ubuntu 时,没有遇到这种屏幕撕裂的情况。回到笔记本电脑:我遇到的最令人费解的事情之一是 xorg.conf 不断被覆盖为故障安全版本。故障安全 xorg.conf:

Section "ServerLayout"
    Identifier "layout"
    Screen 0 "nvidia"
    Inactive "intel"
EndSection

Section "Device"
    Identifier "intel"
    Driver "modesetting"
    BusID "PCI:0@0:2:0"
    Option "AccelMethod" "None"
EndSection

Section "Screen"
    Identifier "intel"
    Device "intel"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:1@0:0:0"
    Option "ConstrainCursor" "off"
EndSection

Section "Screen"
    Identifier "nvidia"
    Device "nvidia"
    Option "AllowEmptyInitialConfiguration" "on"
    Option "IgnoreDisplayDevices" "CRT"
EndSection

nvidia-settings 希望制作这个 xorg.conf:

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 358.16  (buildd@lgw01-40)  Sat Nov 21 02:54:02 UTC 2015

Section "ServerLayout"
    Identifier     "layout"
    Screen      0  "Screen0" 0 0
    Inactive       "intel"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "intel"
    Driver         "modesetting"
    Option         "AccelMethod" "None"
    BusID          "PCI:0@0:2:0"
EndSection

Section "Device"
    Identifier     "nvidia"
    Driver         "nvidia"
    Option         "ConstrainCursor" "off"
    BusID          "PCI:1@0:0:0"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 950M"
EndSection

Section "Screen"
    Identifier     "intel"
    Device         "intel"
    Monitor        "Monitor0"
EndSection

Section "Screen"
    Identifier     "nvidia"
    Device         "nvidia"
    Monitor        "Monitor0"
    Option         "AllowEmptyInitialConfiguration" "on"
    Option         "IgnoreDisplayDevices" "CRT"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    DefaultDepth    24
    Option         "UseDisplayDevice" "none"
    SubSection     "Display"
        Virtual     1920 1080
        Depth       24
    EndSubSection
EndSection

但是,重启后,这个值会被覆盖。这也是好事,因为据我所知,它不起作用。我想看看如果它被读取会发生什么,所以我把它设为不可变的:

chattr +i /etc/X11/xorg.conf

那甚至无法启动,所以我不得不在 shell 中将其改回来。其他值得注意的事实:

Glxinfo

显示 GTX950m 正在使用适当的驱动程序。

升级之前,我清除了 fs 并全新安装了 15.04 以查看基线情况。在安装 nvidia-355 驱动程序之前,glxinfo 显示正在使用 Intel Haswell 显卡。图形情况似乎有点不稳定,但完全没有水平屏幕撕裂。我没有尝试加载 nouveau。nvidia-settings 中的所有配置更改似乎都没有保留。某些设置据称保存到我的主文件夹中的 nvidia-settings-rc,但这些设置不会在重新启动后保留。看起来那里没有保存任何重要的内容。我已经解释了 xorg.conf 的情况。Nvidia-settings 无法识别显示器。我不确定这是否是笔记本电脑的正常情况。X 服务器显示配置显示 X Screen 0(无扫描输出)。当我连接外接显示器时,水平屏幕撕裂仍然存在,nvidia-settings 正确识别为三星,所以我怀疑这与此有关。 nvidia-settings 中没有 sync-to-vblank 选项。Compiz 设置中的 open-GL 子部分中有一个,但它默认选中,取消选中时似乎不会影响任何内容。

不管怎样。我必须修复这个屏幕撕裂问题。我真诚地感谢任何帮助。

答案1

我有同样的 Nvidia 卡,恐怕我们得等一等。问题与此有关:

https://devtalk.nvidia.com/default/topic/775691/linux/vsync-issue-nvidia-prime-ux32vd-with-gt620-m-/1

请仔细注意第 3 页末尾的 fratti 的评论。其中列出了在我们的卡能够正常运行之前需要发生的事情。

相关内容