Включение гибридной графики в Ubuntu на ноутбуках Nvidia + Intel (OpenGL, Vulkan)
Это простая инструкция как включить гибридную графику intel-nvidia на ноутбуке. Чтобы определенные приложения запускались на дискретном чипе, а другие на встроенном. На свое удивление в интернете не нашел простую инструкцию того, как запускать определенные приложения, используя дискретную графику. Так что напишу так просто, на сколько считаю нужным
У меня система KDE Neon 5.21 — по большому счету — Ubuntu LTS с окружением рабочего стола KDE Plasma 5.21, видеочип GeForce MX150
1. Устанавливаем драйвер
a) Если у вас система на Qt (Как правило окружение KDE или LXQt), то с помощью данной команды через терминал загрузим программу для установки драйверов:
sudo apt install software-properties-qt
Если у вас система на GTK то с помощью это команды:
sudo apt install software-properties-gtk
Хотя разницы принципиальной нет
b) Затем запускаем ее с правами root
sudo software-properties-qt
В папке ~/.local/share/applications/ создадим файл software properties qt.desktop с таким содержанием
[Desktop Entry] Categories=System;Settings; Comment[ru_RU]=drivers Comment=drivers Exec=konsole -e "~/.local/share/applications/software-properties-qt.sh" GenericName[ru_RU]=Установка драйверов\s GenericName=Установка драйверов\s Icon=systemsettings MimeType= Name[ru_RU]=software properties qt\n Name=software properties qt\n Path= StartupNotify=true Terminal=false TerminalOptions= Type=Application X-DBUS-ServiceName= X-DBUS-StartupType= X-KDE-SubstituteUID=false X-KDE-Username=
И файл software properties qt.sh в той же папке:
#! /bin/bash echo software-properties-qt sudo /usr/bin/software-properties-qt
После перезагрузки ярлык появится в меню
Но это далеко не обязательно, вполне достаточно запустить из консоли для наших целей настройки гибридной графики
c) Переходим на последнюю вкладку Additional drivers и устанавливаем нужный драйвер. Я выбрал самой последней версии, который не tested и не server
d) После установки перезагружаем устройство
2. Настраиваем видеокарту
a) Загружаем следующую программу:
sudo apt install nvidia-settings
b) Переходим в PRIME Profiles Здесь мы видим три пункта:
- NVIDIA (Performance Mode) — работать только на дискретной графике. Сильно потребляет батарею в несложных задачах, а так же ноутбук начинает греться. Зато система работает намного быстрее, но это того не стоит. У меня после установки драйвера этот пункт включился автоматически
- NVIDIA On-Demand — некоторые приложения будут использовать дискретную графику nvidia, но по-умолчанию встроенная intel. Как запустить конкретное приложение с дискретной графикой напишу дальше
- NVIDIA (Power Saving Mode) — отключение дискретной графики
Выбираем второй вариант — NVIDIA On-Demand , и перезагружаем систему
3. Запуск приложения с использованием дискретной графики
Это то, что сложнее всего гуглилось.
Для запуска приложения с использованием графики nvidia нужно задать для OpenGL две переменные среды:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia
__NV_PRIME_RENDER_OFFLOAD=1
Делать это надо перед командой для запуска приложения. Например, нам нужно запустить из терминала приложение program с использованием дискретной графики. Нужно вызвать его так:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia program
Соответственно, если у приложения есть ярлык (.desktop) в меню приложений, то надо изменить команду запуска в ярлыке. В KDE Plasma нужно нажать на него ПКМ, открыть свойства (или «изменить приложение. «), перейти во вкладку «приложение» и перед командой приписать данную приставку. В других средах похожего стола примерно так же
Можно сделать это же действие через текстовый редактор. Открываем ярлык, находим Exec= , и приписываем перед коммандой данную приставку __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia
Заключение
Данный метод, как я понял, точно работают для программ, использующих библиотеки OpenGL и Vulkan. У меня, к сожалению, не получилось запустить так Windows приложение через Wine, которое использует DirectX, но это уже совсем другая история. (OpenGL приложения под Wine работают)
P.S. в комментариях (#comment_23011444) немного подсказали, что для работы с Proton (DirectX) есть такой док