在你的Arch Linux笔记本上畅快使用NVIDIA显卡,包括Vulkan

  • 1424 字
  1. 1. 禁止Vulkan使用独显
  2. 2. 让prime-run能调用独显

上回(《在你的 Arch Linux 笔记本上畅快使用 NVIDIA 显卡》)说到如何在Arch Linux上配置NVIDIA和Intel双显卡,但还留有一个问题未解决,就是Vulkan应用会唤醒独显,导致启动和退出一些应用时因需要唤醒独显而卡顿。

而且,部分GTK4应用,如Ptyxis,即使使用了GL作为渲染后端,也会调用Vulkan而唤醒独显。

本文将介绍如何解决这个问题。

禁止Vulkan使用独显

设置环境变量 VK_LOADER_DRIVERS_DISABLE=nvidia_icd.json,可以禁止Vulkan加载NVIDIA的驱动,从而避免唤醒独显。

把它加入 /etc/environment 文件:

1
echo 'VK_LOADER_DRIVERS_DISABLE=nvidia_icd.json' | sudo tee -a /etc/environment

prime-run能调用独显

nvidia-prime包提供的原版/usr/bin/prime-run脚本不会取消设置VK_LOADER_DRIVERS_DISABLE

/usr/bin/prime-run

1
2
#!/bin/bash
__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia "$@"

我们需要自定义一个prime-run脚本。通过创建/usr/local/bin/prime-run文件,我们可以覆盖掉原版的prime-run脚本。脚本如下,也可在https://github.com/Kimiblock/moeOS.config/blob/master/usr/share/moeOS-Docs/bin/prime-run下载:

/usr/local/bin/prime-run

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash

if [ -d /proc/driver/nvidia/gpus ]; then
env \
-u VK_LOADER_DRIVERS_DISABLE \
__NV_PRIME_RENDER_OFFLOAD=1 \
__VK_LAYER_NV_optimus=NVIDIA_only \
__GLX_VENDOR_LIBRARY_NAME=nvidia \
VK_LOADER_DRIVERS_SELECT=nvidia_icd.json \
__EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/10_nvidia.json \
"$@"
else
env \
-u VK_LOADER_DRIVERS_DISABLE \
DRI_PRIME=1 \
"$@"
fi

记得设置执行位。

这样,当你需要使用独显运行Vulkan应用时,只需使用prime-run <command>即可。

美中不足的是,switcheroo-control集成的「使用独立显卡启动」选项并不是直接调用prime-run,所以Vulkan应用不能通过GNOME的右键菜单选项来方便地使用独显运行了。

分享这一刻
让朋友们也来瞅瞅!