Включение гибридной графики в Ubuntu на ноутбуках Nvidia + Intel (OpenGL, Vulkan)
Введение
Это простая инструкция как включить гибридную графику intel-nvidia на ноутбуке. Чтобы определенные приложения запускались на дискретном чипе, а другие на встроенном. На свое удивление в интернете не нашел простую инструкцию того, как запускать определенные приложения, используя дискретную графику. Так что напишу так просто, на сколько считаю нужным
У меня система KDE Neon 5.21 — по большому счету — Ubuntu LTS с окружением рабочего стола KDE Plasma 5.21, видеочип GeForce MX150
1. Устанавливаем драйвер
a) Если у вас система на Qt (Как правило окружение KDE или LXQt), то с помощью данной команды через терминал загрузим программу для установки драйверов:
Если у вас система на GTK то с помощью это команды:
Хотя разницы принципиальной нет
b) Затем запускаем ее с правами root
Можно так же добавить ярлык для запуска в меню приложений
Инструкция для KDE
/.local/share/applications/ создадим файл software properties qt.desktop с таким содержанием
И файл software properties qt.sh в той же папке:
После перезагрузки ярлык появится в меню
Но это далеко не обязательно, вполне достаточно запустить из консоли для наших целей настройки гибридной графики
c) Переходим на последнюю вкладку Additional drivers и устанавливаем нужный драйвер. Я выбрал самой последней версии, который не tested и не server
d) После установки перезагружаем устройство
2. Настраиваем видеокарту
a) Загружаем следующую программу:
b) Переходим в PRIME Profiles Здесь мы видим три пункта:
NVIDIA (Performance Mode) — работать только на дискретной графике. Сильно потребляет батарею в несложных задачах, а так же ноутбук начинает греться. Зато система работает намного быстрее, но это того не стоит. У меня после установки драйвера этот пункт включился автоматически
NVIDIA On-Demand — некоторые приложения будут использовать дискретную графику nvidia, но по-умолчанию встроенная intel. Как запустить конкретное приложение с дискретной графикой напишу дальше
NVIDIA (Power Saving Mode) — отключение дискретной графики
Выбираем второй вариант — NVIDIA On-Demand , и перезагружаем систему
3. Запуск приложения с использованием дискретной графики
Это то, что сложнее всего гуглилось.
Для запуска приложения с использованием графики nvidia нужно задать для OpenGL две переменные среды:
для Vulkan только:
Делать это надо перед командой для запуска приложения. Например, нам нужно запустить из терминала приложение program с использованием дискретной графики. Нужно вызвать его так:
Соответственно, если у приложения есть ярлык (.desktop) в меню приложений, то надо изменить команду запуска в ярлыке. В KDE Plasma нужно нажать на него ПКМ, открыть свойства (или «изменить приложение. «), перейти во вкладку «приложение» и перед командой приписать данную приставку. В других средах похожего стола примерно так же
Пример: ярлык игры Wolfenstein — Blade of Agony
Можно сделать это же действие через текстовый редактор. Открываем ярлык, находим Exec= , и приписываем перед коммандой данную приставку __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia
Заключение
Данный метод, как я понял, точно работают для программ, использующих библиотеки OpenGL и Vulkan. У меня, к сожалению, не получилось запустить так Windows приложение через Wine, которое использует DirectX, но это уже совсем другая история. (OpenGL приложения под Wine работают)
Источник
Две Видеокарты
01:00.0 AMD/ATI radeon 6900 дискретная
02:00.0 NVIDIA 7300 дискретная
биос считает основной Radeon линь считает что биос прав и выводит все на Радеон
необходимо чтобы линь начиная уже с тектового этапа загрузки считал что Нвидиа основная и выводил все на неё, ибо Радеон у меня на проброс в виртуалку
каким образом это можно сделать? если невозможно на этапе загрузки то хотя бы в консоли после загрузки — если и это не возможно то хотябы в иксах
сразу предупреждаю заумных: переставить местами невозможно ибо Радеон 2ух слотовый и будет упираться в псай фаерваер который переставить просто некуда
ОС или Ubuntu 12.04 или Debian wheezy (testing) ядра с Xen Domain-0 v3.3 и выше
пробывал поменять местами на время установки, затем вернуть обратно, результата не дало, pciback.hide=(01:00.0) тоже не помогает линь упорно пытается вывести видео на 1ю видяху
В биосе должно быть что то типа «Init Display First»
мечтать не вредно
Asrock x79 extreme6 — ну нету там такого увы 🙂
Риальне? У меня на асроке есть такая переключалка.
Или обе дискретные?
Текстовые не знаю, а через фреймбуфер должно получится.
Да, есть такая проблема в линуксе, что без иксов видеокарты инициализировать нельзя и управлять ими соответственно тоже. Это миллион раз обсуждалось, все претензии к производителям с их закрытыми архитектурами.
Так что какая в биосе инициализировалась, та и будет изображение гнать вплоть до загрузки драйвера.
А в иксах с загруженным драйвером все просто. Там все как обычно только в секции Device с нужным драйвером и BusID «PCI:2:0:0» или какой тебе нужен. Далее в ServerLayout соответствующий Screen (в котором нужный Device).
Можно даже одновременно, запихав в Layout два Screen или сделав два Layout с разными Screen и запуском отдельных иксов, выводить изображение с двух видеокарт. Только я не совсем в курсе нюансов, как nvidia и fglrx уживаются. Никогда не пробовал, но стало жутко интересно. Как-нибудь обязательно попробую.
но неужели невозможно как нибудь перекрутить ядро чтобы оно думало что именно вторая видяха является основной, или линь полностью до загрузки иксов использует вывод через биос?
в системе cat /sys/bus/pci/devices/0000:01:00.0/boot_vga выодит 1 cat /sys/bus/pci/devices/0000:02:00.0/boot_vga выводит 0
уже после определения девайсов(до иксов) знает к кому обращаться, но может его можно обмануть?
ну хорошо поставим вопрос немного иначе можно ли сказать линуксу чтоб он вообще забыл про /sys/bus/pci/devices/0000:01:00.0 мол нету там ничего, или самого псай 01:00.0 нету
ну или выполнить скрипт отключения этого девайса сразу после его определения, каким образом такое можно сделать?
4. unbind device from host kernel driver (example PCI device 01:00.0)
Load the PCI Stub Driver if it is compiled as a module modprobe pci_stub lspci -n locate the entry for device 01:00.0 and note down the vendor & device ID 8086:10b9 . 01:00.0 0200: 8086:10b9 (rev 06) . echo «8086 10b9» > /sys/bus/pci/drivers/pci-stub/new_id echo 0000:01:00.0 > /sys/bus/pci/devices/0000:01:00.0/driver/unbind echo 0000:01:00.0 > /sys/bus/pci/drivers/pci-stub/bind
поменяй карты местами , делов то 🙂
Не знаю, сработает ли способ для ATI. На интел+нвидиа помогает добавить параметр nomodeset при загрузке.
Да, до загрузки драйвера используется инициализированная в биосе видеокарта. Если биос будет уметь инициализировать по выбору видеокарту, тогда и проблемы не будет.
Мысль такая, что без загрузки драйвера видеокарты ничего сделать нельзя. К сожалению с трудом представляю что можно сделать до запуска иксов. Возможно с fb-драйвером твоей видеокарты можно как-то ее запустить, но как — не знаю.
поменяй карты местами , делов то 🙂
это для тебя в первом посте:
сразу предупреждаю заумных: переставить местами невозможно ибо Радеон 2ух слотовый и будет упираться в псай фаерваер который переставить просто некуда
От себя добавлю, что можно сделать удлинитель. Развести платку под разъем, сдуть разъем с какой-нибудь старой платы и припаять шлейфы. А на втором конце платка для разъема материнки с контактами, как на видеокарте (можно срезать с какой-нибудь дохлой pci-e видеокарты).
Сейчас конфигю fb, по крайней мере консоль у меня уже на 2ой видюхе и первая пробрасывается в виртуалку, проблема осталось с xorg`ом, пытаюсь сделать конф чтобы и иксы подхватили видяху.
глючная убунту блин дебиан-тестинг сам все подхватил а убунту сразу предлагает повесится, какая же она все таки User-friendly за ногу её, лад пойду я её доламыать 🙂
Главное не забудь выложить результаты. Нам тоже интересно, не говоря о тех, кто будет искать решение этой проблемы в будущем.
вообщем как для дебиан так и для убунту практически ничего делать ненадо — реально надо собрать ядро ксена с pciback и при загрузке указать отключение 01:00.0 девайса, в дебиане у меня фб сам подхватил вторую видяху и ксорг тоже сделал все сам, в убунте нужно поправить ксорг и если нужно либо явно указать фб на вторую видяху либо сделать так чтобы он ее просто находил вот впринципе и все.
сейчас имею венду с фаерваер портом видяхой сеткой юсбишками и т д снижения производительности незаметно тесты синебенк супер_пи фритчез показывают те же результат что и в хосте (конечно с погрешностью расчетов до 3% взависимости от программы)
также можно отключить и пробросить одну видяху. эх как хорошо ксен вырос, для всей этой чуши теперь почти ничего делать то и ненадо 🙂 хотя я убил на все это тучу времени. вот скрипт делает большую часть сам
fbcon тоже можно указать при загрузке в грабе таким параметром: fbcon=map:1 где число это: cat /proc/fb
в скрипте выше опечатка
внутри последнего еха: sudo echo ‘
все одинарные кавычки надо заменить на \x27
Источник
Две разные видеокарты в одном пк.
Есть: ASROCK B450 STEELLEGEND, AMD RYZEN 5 3600, GeForce 1050 ti, 16 GB DDR4.
Прекрасно работающая карта в винде и отвратительно работающая на линуксе, юзабельность в GNOME и KDE близится к нулю. Хочу купить недорогую карту от AMD, которая вполне дружит с Linux, вроде RX 560 — RX 580, которые достаточно старые, но достаточно производительные для игр и задач.
Теперь вопрос про железо: смогу я держать на одной материнке две видеокарты в разных PCI-слотах (благо их два для видяхи) и в зависимости от системы, просто подключать мониторы к нужной видяхе, а вторая в это время будет простаивать, или же они будут друг другу мешать?
Прекрасно работающая карта в винде и отвратительно работающая на линуксе, юзабельность в GNOME и KDE близится к нулю.
В чём это выражается?
Подлагивание меню приложений, в целом сейчас не все так ужасно, как было 4 года назад, новые драйвера решили проблему тиринга и на XFCE4 вполне комфортно и на NVIDIA сидеть, но это закрывает доступ к свободным драйверам и другим окружениям.
У меня такая же. Прекрасно работает на блобе как по виндой, так и под линем.
Теперь вопрос про железо: смогу я держать на одной материнке две видеокарты в разных PCI-слотах (благо их два для видяхи) и в зависимости от системы, просто подключать мониторы к нужной видяхе, а вторая в это время будет простаивать, или же они будут друг другу мешать?
В теории не должны. Но неизвестно как amdgpu поведет себя с двумя «полярисами» – RX560 и RX580.
У меня прекрасно работали под линем (но с ATI Catalyst) старые XT7870 и R7 350, использовал обе видяхи в Blender. Монитор был подключен к первой.
Подлагивание меню приложений, в целом сейчас не все так ужасно, как было 4 года назад,
4 года назад у меня подлагивали плазмокеды, но я так и не понял из-за чего, то ли из-за старого двухъядерного проца, то ли из-за GT 630 с блобом. Сейчас у меня XFCE4+i7 3770+GTX 1050Ti+блоб 440. Тиринга нет, лагов нет.
Точнее, «прекрасно» работали.
Прекрасная производительность на лине и тем более в гноме. С такими взглядами и предрассудками ничего не спасет.
Включи уже Force Composition Pipeline в настройках блоба.
Прекрасно работающая карта в винде и отвратительно работающая на линуксе, юзабельность в GNOME и KDE близится к нулю.
Может быть, если под «онтопиком» использовать Nouveau. С Wayland он работает, откровенно говоря, плохо. С X.org, вроде бы, получше. Плюс нужно обязательно устанавливать EGLstreams.
Если хотите, чтобы работало — ставьте блоб. Иначе, увы, никак.
Хочу купить недорогую карту от AMD, которая вполне дружит с Linux, вроде RX 560 — RX 580, которые достаточно старые, но достаточно производительные для игр и задач.
Рекомендую 570 как минимум. Младшие модели не особо подходят для игр, а 570 достаточно дешёва и производительна. Сам такой владею.
С другой стороны, у вас же «дуалбут»! Тогда игры можно и под «виндой» запускать и не морочить себе голову покупкой новой видеокарты (хотя 1050Ti я всё же рекомендовал бы заменить хотя бы на 1650 Super или ту же 570-580).
смогу я держать на одной материнке две видеокарты в разных PCI-слотах (благо их два для видяхи) и в зависимости от системы, просто подключать мониторы к нужной видяхе, а вторая в это время будет простаивать, или же они будут друг другу мешать?
Сможете. Конечно, работать они будут, скорее всего, в режиме 8+8 линий, но это не так уж и хуже 16-ти. Кстати, можно попробовать подключить один монитор к обоим «карточкам» и просто переключать источник изображения (если несколько портов на мониторе; правда, не знаю, сработает ли).
Все это есть. Гном работает как говно. Примерно в 10 раз хуже, чем XFCE, в 3 раза хуже КДЕ и в 100 раз хуже винды. В целом мы имеем, что блоб хорошо работает только на XFCE4.
За 570 спасибо, посмотрю в её сторону. Я бы хотел скорее что-то сопоставимое с 1050ти по производительности, но хорошо работающее под линуксом на всех ДЕ и окнах (как-то же люди разрабатывают ГНОМ и записывают видео без лагающего меню и дергающихся окон). Впринципе, если покупать 570-580, то 1050ти можно просто убрать, потому что и на винде это будет вполне ОК.
С такими взглядами и предрассудками ничего не спасет.
Ну скакуну-ковыряльщику явно лучше без проприетарного блоба.
а версия крыски последняя? Я слышал, в конце 2019, они пофиксили комфортное использование, и теперь это почти что гном
Можешь. Но учитывай то, что в PCIe линии будут разделены на две x8.
Вроде да, на 4.14 сидел пару недель. По-моему немного даже лучше стало, симпатичные гномовские приложения стали лучше работать.
установи nvidia-driver и не мучайся
проблем не будет. дуал-бут не нужен в такой ситуации, используй вфио и квм, будешь играться в винде без перезагрузок
по линиям псие в слотах, надо брать материнку, чтобы получилось именно 8+8, а не 16+4.
Ничего, через 3 года раскроют потенциал)
С ним то проблемы в гноме и кедах никуда не уходят. Производительность окружения хуже окружения винды раз на пару порядков. Это просто неотзывчивая хрень и мучения получаются.
Добавлю, что эта жуть не особо зависит от видеокарты. Я прошел через невидию, амуде и интел на лине… Ничего не помогало… 10-ка после страданий показалась даром б*жьим.
570 достаточно дешёва и производительна. Сам такой владею.
Подтверждаю. RX570 купил на днях за $100, всё работает нормально.
в devel-ветку мезы добавляют фичу
фича работает нестабильно, в devel-ветке её отключают
Эй-эмд-ди опять обосралось с поддержкой своих видеокарт
тебе уже говорили, что ты отбитый хейтер?
PCIE1: в режиме x16; PCIE4: в режиме x4
можешь, но ту что воткнёшь в слот пса4 может ужать в производительности.
ну и какбы.. 580я вроде быстрее чем 1050ти( кроме хардварного декода вп9 которого нет на 580й) почему бы не оставить только её а весь этот геморой с переключениями нафиг?
Я не читаю что обо мне говорят. И мне пофиг на эй-эм-ди. Факт в том, что они постоянно лажают. Я устал ждать, пока они наймут больше людей в разработчики, и просто перешел в лагерь зеленых.
Факт в том, что они постоянно лажают
твои факты не факты
и в зависимости от системы, просто подключать мониторы к нужной видяхе,
Одну видеокарту подключи по DP/DVI, а другую по DVI/HDMI соответственно и переключай видеокарты в мониторе кнопкой выбора источника сигнала.
А чем этот gnome вам упёрся?
Поставьте Mate, он тоже на GTK3 работает.
Можешь. Но учитывай то, что в PCIe линии будут разделены на две x8.
Это зависит от топологии материнки и используемых обоими картами слотов, правда то, что на материнке ТС только два крупных слота подводит к той мысли, что в этом конкретном случае вы правы.
Ну, как правило в потребительском железе это работает как x16+x0 или x8+x8. Во времена фуфлыксов PCIe контроллер был на материнке и там все зависело от чипсета. ЕМНИП, материнки на 990FX умели в 2X x16 + 1x 8x.
GeForce 1050 ti
Прекрасно работающая карта в винде и отвратительно работающая на линуксе
это закрывает доступ к свободным драйверам
Вышлешь мне её с доплатой?
Такое действительно я не встречал, а вот материнка дающая выбор между конфигурациями 8х+8х+8х и 16х+8х у меня просто есть.
Могу ссылку на авито дать, можешь на рабочую 570 поменять или купить.
Нет, я люблю обмазываться блобом от NVidia.
интересно было бы посмотреть на логи иксов.
Источник