我在 Ubuntu 19.10 上安装了 Nvidia 专有驱动程序。
在 Prime Profiles 部分,有三个选项:
* NVIDIA(性能模式)
* NVIDIA On-Demand
* Intel(省电模式)
第一个和最后一个选项很明显,但我不知道第二个选项是如何工作的。它如何检测哪些应用程序需要 NVIDIA 驱动程序而哪些不需要?
我在 Ubuntu 19.10 上安装了 Nvidia 专有驱动程序。
在 Prime Profiles 部分,有三个选项:
* NVIDIA(性能模式)
* NVIDIA On-Demand
* Intel(省电模式)
第一个和最后一个选项很明显,但我不知道第二个选项是如何工作的。它如何检测哪些应用程序需要 NVIDIA 驱动程序而哪些不需要?
好的,我终于想通了。目前,NVIDIA 似乎可以为 OpenGL 和 Vulkan 应用程序进行卸载渲染。
为了启用此卸载渲染,您必须将 Prime 配置文件设置为“按需”,然后对于 Vulkan 卸载,您必须将此变量放入
/etc/environment
文件中:__NV_PRIME_RENDER_OFFLOAD=1
对于 OpenGL 应用程序,您必须输入以下变量:
__NV_PRIME_RENDER_OFFLOAD=1
__GLX_VENDOR_LIBRARY_NAME=nvidia
重新启动后,它将开始渲染卸载。
为了检查正在使用的显卡,您可以在终端中输入以下命令:
glxinfo | grep vendor
来自:Part I. 安装和配置说明
第 35 章 PRIME 渲染卸载
PRIME 渲染卸载是让 X 屏幕由一个 GPU 渲染的能力,但在该 X 屏幕中选择某些应用程序以在不同的 GPU 上渲染。这在与动态电源管理结合使用时特别有用,可让 NVIDIA GPU 处于关闭状态,除非需要渲染选定的性能敏感应用程序。
渲染 X 屏幕大部分的 GPU 被称为“接收器”,而某些应用程序渲染被“卸载”到的 GPU 被称为“源”。渲染卸载源生成呈现在渲染卸载接收器上的内容。NVIDIA 驱动程序可以作为 PRIME 渲染卸载源,卸载 GLX+OpenGL 或 Vulkan 的渲染,呈现到由 xf86-video-modesetting X 驱动程序驱动的 X 屏幕。
X 服务器要求
NVIDIA 的 PRIME 渲染卸载支持需要 X.Org X 服务器中的以下 git 提交:
7f962c70 - xsync:在 SyncCreate 中添加资源,导出 SyncCreate
37a36a6b - GLX:添加每个客户端的供应商映射
8b67ec7c - GLX:使用发送客户端查找 XID
56c0a71f - GLX:添加功能以更改客户供应商列表
b4231d69 - GLX:设置 GlxServerExports::{major,minor}Version
在撰写本文时,这些提交仅在 X.Org X 服务器的 master 分支中,还没有在任何官方 X.Org X 服务器版本中。
作为Md Narimani 答案的扩展:我可以确认这实际上在 kubuntu 19.10 和 nvidia 驱动程序版本 440 上为我工作
一些背景信息可以在第 34 章找到。 PRIME 渲染卸载
您也可以在 GUI 中设置“按需”选项:
Nvidia X Server Settings - PRIME Profiles: NVIDIA On-Demand
然后重新启动。
那么您也可以直接从命令行使用环境变量启动您的应用程序 - 因此您可以根据需要切换 GPU:
根据@md-narimani 和@dominick-pastore 的回答,实际上已经准备好作为
nvidia-prime-applet
包的一部分为此目的提供的shell 脚本。您可以将它们放在您通常使用的任何命令之前。
但这只有在正确加载 nvidia 内核驱动程序并且 Xorg 已正确生成 Nvidia 屏幕时才有效,您可以通过以下方式进行测试:
如果屏幕没有正确检测到,则创建
/etc/X11/xorg.conf.d/nvidia.conf
并使用第 34 章中的说明中的内容填充它。@stefan-krüger 提到的PRIME 渲染卸载。