本文来自依云's Blog,转载请注明。
这么做的原因是:这样 minecraft 帧率高,不卡顿。
- intel 显卡:帧率低,好像是20fps左右吧。开不了光影
- optirun:坏了
- primusrun:帧率高了一些,不多
- nvidia-xrun:丝般顺滑,只是切换回我之前跑程序的 Xorg 时,发现我的 Awesome 已经没了。一开始是黑屏,经过配置之后倒是能得到 LightDM 的登录画图。另外 nvidia-xrun 无法卸载模块,因为被 Xorg 使用了,需要停止 lightdm。
那么,既然 nvidia-xrun 效率不错,我要是把整个桌面都搬上去呢?经过了一些折腾之后,取得了不错的结果。一个意料之外的好处是,播放视频、网页浏览器里滚动页面时常出现的画面撕裂好了~
当然这样做会费电,降低续航时间。不过既然是 T470p,一开始我就没打算整天带着它到处跑,所以无所谓啦。需要的时候再切回去好了。有个叫 optimus-manager 的软件,看介绍是帮助这么切换的。不过我对一切自动化程度太高的软件都心存疑虑,不确定它到底干了什么,会不会和我其他的配置相冲突。所以以后再看看啦。
最终的配置方案是这样的——
首先,把 bumblebeed.service 关掉并禁用。
然后,Xorg 配置一份,放 /etc/X11/xorg.conf.d/ 下就好。这份配置来自于惠狐的《Archlinux 下 Intel 和 NVIDIA 双显卡 de 折腾笔记》一文。
Section "OutputClass" Identifier "intel" MatchDriver "i915" Driver "modesetting" EndSection Section "OutputClass" Identifier "nvidia" MatchDriver "nvidia-drm" Driver "nvidia" Option "AllowEmptyInitialConfiguration" Option "PrimaryGPU" "yes" ModulePath "/usr/lib/nvidia/xorg" ModulePath "/usr/lib/xorg/modules" EndSection
lightdm.conf 里在 [Seat:*]
里加一个 hook 配置,否则会黑屏的:
display-setup-script=/usr/local/bin/lightdm-setup
这个脚本内容如下:
#!/bin/bash -e xrandr --setprovideroutputsource modesetting NVIDIA-0 || exit 0 xrandr --auto
写了一个 systemd service,用来启用 N 卡。因为默认它是关的。
[Unit] Description=Switch On nvidia card ConditionPathExists=/proc/acpi/bbswitch Before=display-manager.service [Service] Type=oneshot ExecStart=/bin/sh -c "echo ON > /proc/acpi/bbswitch" [Install] WantedBy=graphical.target
我之前在 ~/.xprofile 配置了视频的硬件加速,现在得删掉。GM108M [GeForce 940MX] 这个显卡的视频加速没法用的。
设置内核模块的选项 options nvidia_drm modeset=1
,不然 xrandr --scale
时结果会不对。
暂时就这些了。
2019年07月20日更新:我又换回 Intel 显卡了。虽然这样性能差一点,滚动、视频时画面有点撕裂,外接屏幕中鼠标会闪,但是它稳定可靠啊!Nvidia 的驱动实在是崩得太闹心了(而且我那卡不支持视频硬解)。
2019年09月03日更新:我用上了 NVIDIA 新的 PRIME 方案,效果很好~
Apr 09, 2019 02:13:35 PM
看起来不错
我这还有个日常用来跑任务的 Linux 的主机,看来可以考虑用它做桌面了 (装了个还不错的显卡 一直都只是跑任务的时候用它 没给它装桌面
Apr 09, 2019 10:22:53 PM
deepin的nvidia-prime也是用得这个方案 :)
Apr 23, 2019 06:31:38 PM
路过。
May 20, 2019 12:32:04 PM
用过optimus-manager,gdm还是不够支持,然后power manage method还是有点问题(可以选择只用n卡),其他的都还算比较支持。