nvidia on demand что это
Режим on-demand в 435 драйвере nVidia
Видали, до чего этот мир докатился? Неужели нормальный оптимус в линуксах прям от производителя? Кто-нибудь у себя уже пробовал?
А хотелось бы понять, как именно работает механика этого ондеманда и похожа ли она на механизм работы бамблби или оно как-то само себе там будет решать, с какой видюхой запускать то или иное ПО
О, кажется, вот как оно работает:
Configure Graphics Applications to Render Using the GPU Screen To configure a graphics application to be offloaded to the NVIDIA GPU screen, set the environment variable __NV_PRIME_RENDER_OFFLOAD to 1. If the graphics application uses Vulkan, that should be all that is needed. If the graphics application uses GLX, then also set the environment variable __GLX_VENDOR_LIBRARY_NAME to nvidia, so that GLVND loads the NVIDIA GLX driver. NVIDIA’s EGL implementation does not yet support PRIME render offload.
NVIDIA’s EGL implementation does not yet support PRIME render offload.
На Wayland не заработает. Впрочем немногие композиторы wayland вообще будут работать на блобе. Но радоваться всё равно рано.
Ну кеды пока вообще на вяленом не работают например. Так что почему бы и не порадоваться уже этому:) В контексте того, что в бамблби никто не коммитил уже пять лет, это вообще отличная новость, имо
Тем временем завезли нормальный гуй для optimus на ubuntu
Собственно, это как раз под обновление драйвера, да. Но, как по мне, довольно бесполезно, раз достаточно один раз в официальной невидеевой тулзе включить on-demand и потом пользоватьза переменными окружения при запуске конкретных программ
Стоит 465 драйвер, при включенном ондеманде приложения чет запускаются все равно на встроенной карте. Или я не понял как она работает?
How NVIDIA On-Demand option works in NVIDIA X Server Settings?
I have installed Nvidia proprietary driver on Ubuntu 19.10.
In the Prime Profiles section, there are three options:
* NVIDIA (Performance Mode)
* NVIDIA On-Demand
* Intel (Power Saving Mode)
First and last options are quite obvious, But I don’t know how the second option works. How it detects which application needs NVIDIA driver and which doesn’t?
4 Answers 4
Ok I finally figured it out. As this moment, it appears that NVIDIA can do offload rendering for OpenGL and Vulkan apps.
In order to enable this offload rendering, you have to put the Prime profile on «On-Demand», then for Vulkan offloading you have to put this variable inside your /etc/environment file:
__NV_PRIME_RENDER_OFFLOAD=1
For OpenGL apps, you have to put these variables:
__NV_PRIME_RENDER_OFFLOAD=1
__GLX_VENDOR_LIBRARY_NAME=nvidia
After a restart, it will start render offloading.
In order to check which graphic card is being used, you can enter the following command in terminal:
glxinfo | grep vendor
Chapter 35. PRIME Render Offload
PRIME render offload is the ability to have an X screen rendered by one GPU, but choose certain applications within that X screen to be rendered on a different GPU. This is particularly useful in combination with dynamic power management to leave an NVIDIA GPU powered off, except when it is needed to render select performance-sensitive applications.
The GPU rendering the majority of the X screen is known as the «sink», and the GPU to which certain application rendering is «offloaded» is known as the «source». The render offload source produces content that is presented on the render offload sink. The NVIDIA driver can function as a PRIME render offload source, to offload rendering of GLX+OpenGL or Vulkan, presenting to an X screen driven by the xf86-video-modesetting X driver.
X Server Requirements
NVIDIA’s PRIME render offload support requires the following git commits in the X.Org X server:
Nvidia тихо выпустила поддержку динамического режима работы Vulkan и OpenGL + GLX в PRIME на Linux
Компания Nvidia без лишнего шума и анонсов добавила в драйверах версии 435.17 для Linux поддержку работы с Vulkan и OpenGL + GLX в динамическом (on-demand) режиме рендеринга PRIME. Поддержки EGL пока нет.
Вся масштабность анонса в одном скриншоте
PRIME — это Linux-реализация системы распределения рендеринга приложений по нескольким графическим процессорам известной как Nvidia Optimus, что актуально для ноутбуков, оснащенных, например, связкой из встроенного видео Intel HD Graphics и дискретным чипом Nvidia.
Режим PRIME актуален для тех, кто пытается сэкономить заряд батареи, при этом сохраняя возможность при необходимости максимально использовать ресурсы системы. Он позволяет рендерить на более производительном дискретном чипе какое-то конкретное приложение, а для работы всего остального — задействовать встроенное в CPU видео.
Для работы в режиме PRIME вам понадобится X Server, а также желание пропатчить его вручную. Коммиты, которые позволяют запустить вышеупомянутые изменения, уже есть в мастер-ветке проекта X Server на Git, но еще не вошли ни в один из релизов.
NVIDIA’s PRIME render offload support requires the following git commits in the X.Org X server:
7f962c70 — xsync: Add resource inside of SyncCreate, export SyncCreate
37a36a6b — GLX: Add a per-client vendor mapping
8b67ec7c — GLX: Use the sending client for looking up XID’s
56c0a71f — GLX: Add a function to change a clients vendor list
b4231d69 — GLX: Set GlxServerExports::
Полную информацию по сборке X Server и настройке экранов можно найти тут.
У пользователей Ubuntu 18.04 и 19.04 есть альтернатива и они могут воспользоваться собранным на стороне Nvidia ppa-репозиторием.
Также вам потребуется настроить переменные среды для выгрузки рендера разных типов приложений.
Для приложений Vulkan нужно использовать __NV_PRIME_RENDER_OFFLOAD=1
Для приложений GLX вам нужно использовать оба: