我在 NVIDIA X 服务器设置中启用了新的“NVIDIA On-Demand”选项。现在所有东西都默认使用 iGPU,这应该会更有利于电池寿命(至少,这是我所希望的)。
我希望一些应用程序(例如 Blender)默认使用 dGPU。
根据文档:
要将图形应用程序配置为卸载到 NVIDIA GPU 屏幕,请将环境变量设置
__NV_PRIME_RENDER_OFFLOAD
为1
。如果图形应用程序使用 Vulkan 或 EGL,那么这应该是所需的全部。如果图形应用程序使用 GLX,则还要将环境变量设置__GLX_VENDOR_LIBRARY_NAME
为nvidia
,以便 GLVND 加载 NVIDIA GLX 驱动程序。
因此我只是创建了一个 shell 脚本来作为 Blender 可执行文件的代理:
〜/ .local / bin / blender
#!/usr/bin/env bash
export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME=nvidia
blender="$HOME/opt/blender-2.82a-linux64/blender"
exec -a "$0" "$blender" "$@"
这虽然有效,但它不是一个特别干净的解决方案。
NVIDIA 设置有一个“应用程序配置文件”部分,您可以在其中添加特定于应用程序的配置文件。
(应用程序配置文件文档)
有各种与 OpenGL 相关的选项,但是我找不到任何设置来选择使用哪个 GPU。使用应用程序配置文件是否无法实现?有没有比环境变量更简洁的替代方案?
答案1
对我有用的是在我想默认使用 dgpu 的应用程序的 .desktop 文件中添加这些行。
PrefersNonDefaultGPU=true
X-KDE-RunOnDiscreteGpu=true
它还将使用专用显卡启动选项替换为使用集成显卡启动选项。这在 ubuntu 22.04 上有效,我不确定向后兼容性,但我相信它也应该在 impish、focal 和 bionic 上有效。