红联Linux门户
Linux帮助

如何在双显卡Linux设备上运行Vulkan应用

发布时间:2017-06-15 09:12:23来源:IT之家作者:鸢一雨音
注意:禁用核心显卡是可行的,但不适用于便携式计算机。
我在上一篇《如何为Linux配置双显卡》(http://www.linuxdiyf.com/linux/31463.html)的文章中提到,为Linux提供Optimus技术支持的Bumblebee项目并不支持Vulkan图形接口。但是在最近的众多测试里,Vulkan接口表现出来的性能确实高得令人咋舌。很多游戏在同等硬件条件下,使用Linux下的Vulkan接口运行甚至能吊打Windows下D3D的性能。这令很多Linux双显卡(特别是便携式计算机)用户不舒服:明明Vulkan性能很强,但是迫于日常节能的需求,不能用独立显卡渲染整个X;而实现了Optimus技术的Bumblebee项目又偏偏不支持Vulkan。
如何在双显卡Linux设备上运行Vulkan应用
本教程在此提供一种解决方案。既然日常使用的X不能用独立显卡渲染,那我就在需要玩游戏的时候,在不退出日常使用的X会话的情况下,使用独立显卡渲染一个新的X会话;等到游戏玩完了,退出这个会话并关掉独立显卡。这样那个新的X会话就是完全采用独立显卡渲染的,也就不存在因为Bumblebee而无法兼容Vulkan接口的问题了;同时,和Optimus技术一样,在我们没有启动这个特殊的会话的时候,独立显卡是关闭的,也不会消耗额外的电量。
 
一、安装nvidia-xrun
这种解决方案可以手动实现,但是已经有大神将其整合为一个工具:nvidia-xrun项目。如果你是Arch Linux 64位版用户,你应该能很轻松地通过AUR安装这个包:
yaourt -S nvidia-xrun-git
安装完成之后,你应该可以使用nvidia-xrun指令。
先别着急,这个工具需要你安装好英伟达的官方驱动程序。安装官方驱动的方式和注意事项在上篇文章中已经提到过,这里不在赘述。
不要立即执行这个指令,先看完下面的步骤。
 
二、安装一个桌面环境
我们的最终目的是运行一个桌面应用,所以我们需要一个桌面环境来承载它。虽然你已经有了一个桌面环境,但考虑到我们只是为了承载某一个应用程序,所以桌面环境越轻便越好。理想的选择是openbox。如果你是Arch Linux 64位版用户,执行下面的指令:
sudo pacman -S openbox
就可以安装一个只有不到2MB的桌面环境。
为了让nvidia-xrun工具启动X的时候启动openbox,我们创建一个文件~/.nvidia-xinitrc,并在里面写入
openbox-session
这样通过nvidia-xrun启动的那个X就会自动启动openbox桌面环境。
 
三、配置nvidia-xrun
到目前为止,nvidia-xrun应该还是不能正常工作的。因为我们没有配置它所使用的X配置文件。从头安装过Arch Linux的朋友们应该清楚,配置X是一个怎么样的步骤。
nvidia-xrun包使用下面这些配置文件(配置文件目录):
1、/etc/X11/nvidia-xorg.conf:主要的X配置文件;
2、/etc/X11/nvidia-xorg.conf.d:自定义的X配置文件目录;
3、/etc/X11/xinit/nvidia-xinitrc:对应于普通xinitrc的配置文件;
4、/etc/X11/xinit/nvidia-xinitrc.d:自定义的xinitrc配置文件目录;
5、~/.nvidia-xinitrc:用户自己的xinitrc配置文件;
为了在双显卡计算机上正确使用独立显卡渲染X,我们需要找到nVidia设备正确的总线ID。我们使用lspci指令来查看所有的PCI设备,并筛选出我们的独立显卡。执行:
lscpi | grep NVIDIA
你应该会看到类似的输出:
由此可见,我的设备的独立显卡总线ID是4:0:0,那么我们修改(或新建)/etc/X11/nvidia-xorg.conf.d/30-nvidia.conf文件,内容如下:
如何在双显卡Linux设备上运行Vulkan应用
 
至此,配置基本完成了。你可以切换到一个新的终端(快捷键一般是Ctrl+Alt+F3~F5,之所以没有F1和F2是因为这两个终端一般都被默认桌面环境占了),登录进你的用户,并执行nvidia-xrun指令。它会询问你sudo密码,然后使用独立显卡启动一个独立的X会话,并启动openbox桌面环境。你可以在这个桌面环境里执行Steam和Steam游戏——它们都是被独立显卡直接渲染的,当然也就支持Vulkan。
当你不想再玩游戏的时候,退出桌面环境和X会话,nvidia-xrun会自动关掉你的独立显卡以省电,然后你可以登出你的账户,回到你原本的桌面环境所在的终端,继续你的日常工作。
采用这种方式不仅能支持Vulkan接口,渲染效率也会比Bumblebee高一些。但是缺点是你需要在一个新的终端上启动一个新的X服务器。即使如此,这也比使用英伟达提供的Prime选项方便得多:你不需要为了玩游戏而退出你日常使用的桌面环境重新登入;这同样也比禁用核心显卡这种相对暴力的手段合理,特别是对于便携式计算机,独立显卡功耗不可忽视的时候。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/31483.html