第 35 章 PRIME 渲染卸载

第 35 章 PRIME 渲染卸载

我在 Ubuntu 19.10 上安装了 Nvidia 专有驱动程序。
在 Prime Profiles 部分,有三个选项:
* NVIDIA(性能模式)
* NVIDIA On-Demand
* Intel(省电模式)

第一个和最后一个选项很明显,但我不知道第二个选项是如何工作的。它如何检测哪个应用程序需要 NVIDIA 驱动程序,哪个不需要?

答案1

好的,我终于明白了。目前看来,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

答案2

从:第一部分 安装和配置说明

第 35 章 PRIME 渲染卸载

PRIME 渲染卸载是指让一个 GPU 渲染 X 屏幕,但选择该 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} 版本

在撰写本文时,这些提交仅在 X.Org X 服务器的主分支中,尚未出现在任何官方 X.Org X 服务器版本中。

答案3

作为扩展Md Narimani 的回答:我可以确认这在带有 nvidia 驱动程序版本 440 的 kubuntu 19.10 上确实有效

一些背景信息可以在以下网址找到第 34 章 PRIME 渲染卸载

您还可以在 GUI 中设置‘按需’选项:Nvidia X Server Settings - PRIME Profiles: NVIDIA On-Demand
在此处输入图片描述 然后重新启动。

然后您可以直接从命令行使用环境变量启动您的应用程序 - 这样您就可以根据需要切换 GPU:

stefan@stefan-Zen:~$ glxheads :0
Name: :0
  Display:     0x556081a45d40
  Window:      0x7000002
  Context:     0x556081a64a70
  GL_VERSION:  3.0 Mesa 19.2.8
  GL_VENDOR:   Intel Open Source Technology Center
  GL_RENDERER: Mesa DRI Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2) 
stefan@stefan-Zen:~$ __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxheads :0
Name: :0
  Display:     0x55f6dd9097a0
  Window:      0x7000002
  Context:     0x55f6dd944878
  GL_VERSION:  4.6.0 NVIDIA 440.64
  GL_VENDOR:   NVIDIA Corporation
  GL_RENDERER: GeForce RTX 2060/PCIe/SSE2

答案4

根据@md-narimani 和@dominick-pastore 的回答,实际上已经为此目的准备好了一些 shell 脚本,作为软件包的一部分nvidia-prime-applet

您可以将它们放在您通常使用的任何命令之前。

nvidia-optimus-offload-glx glxheads :0
nvidia-optimus-offload-vulkan vkcube

但这仅在 nvidia 内核驱动程序正确加载,并且 Xorg 正确生成 Nvidia 屏幕时才会起作用,您可以通过以下方式测试:

cat /var/log/Xorg.0.log | grep -i NVIDIA
# it should output a bunch of lines with "NVIDIA(G0)"

如果屏幕检测不正确,则创建/etc/X11/xorg.conf.d/nvidia.conf并填充以下说明中的内容:第 34 章 PRIME 渲染卸载正如@stefan-krüger所提到的。

相关内容