Использование дискретной видеокарты linux

Включение гибридной графики в 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 работают)

Источник

Включение/отключение дискретной видеокарты

Практически все современные ноутбуки обладают двойными видеокартами. Обычно это что то маломощное от интел, и крутая, энергозависимая карта для фильмов и игр от nvidia или ati. Автоматическое переключение довольно часто глючит(Например: может включится крутая видеокарта при работе с документами, а нам нужно сохранить батарею как можно дольше), поэтому рассмотрим способ ручного переключения.

1. Способ. Подходит для все версий linux с ядром 2.6.34 +

«uname -a» узнать свою версию ядра

Для начала узнаем какие видеокарты видит наша система

Появится примерно такие строчки:

Запомним, что 00:02.0 это слабая видеокарта, а 1:00.0 сильная

Теперь посмотрим, какая из видеокарт сейчас работает

Появятся примерно такие строки:

Плюс стоит на против активной видеокарты, а Pwr обозначает, что видеокарта работает и кушает питание. Несложно догадаться, что можно отключить питание от неиспользуемой карточки этим самым ничуть не повредить системе.

а) Если нам нужно обесточить неиспользуемую видеокарту, то выполняем команду:

Батарея ноутбука скажет вам спасибо 🙂
Если хотим, чтобы лишняя видеокарта отключалась после загрузки системы, то добавляем строчку

в файл /etc/rc.local

б) Если нам нужно, наоборот, включить мощную видеокарту и на неё изначально не подаётся питание то выполняем команды:

sudo echo ON > /sys/kernel/debug/vgaswitcheroo/switch
sudo echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch

DIS — немедленное переключение на дискретную видеокарту
IGD — немедленное переключение на интегрированную видеокарту
DDIS — отложенное переключение на дискретную видеокарту
DIGD — отложенное переключение на интегрированную видеокарту
ON — включить неиспользуемую видеокарту
OFF — выключить неиспользуемую видеокарту

Читайте также:  Windows 10 ночной режим не выключается

Завершаем сеанс, входим заново и отключаем слабую видеокарту

Должно получится так:

Если вдруг видеокарта вообще не работает, то тут поможет только ремонт ноутбуков. Если с видеокартой всё в порядке, но способ описанные выше кажется сложным, то можно воспользоваться графической программой.

2. Способ. Если на вашем ноутбуке установлена ubuntu и лезть в терминал не хочется, то можно воспользоваться Ubuntu Control Center

После установки и запуска переходим в Hardware>VGA Switching

Тут всё интуитивно понятно.

После выбора видеокарты произойдёт автоматическое завершение сеанса, так что не пугайтесь. Лично мне первый способ показался более красивым 🙂

Источник

Перейти на полную работу через дискретную видеокарту Radeon

Стал я «счастливым» обладателем ноутбука с видеокартой Radeon. До этого слышал о проблемах с ее запуском на лине только по наслышке.

Аппарат работает на Linux Mint 18.3 Cinnamon (можно приравнять к Ubuntu 16.04)

Вот такие видеокарты определяет (мне нужная вторая — HD 6400M/7400M):

Вот какая сейчас выбрана (первая — не дискретная, а нужно выбрать вторую):

Запуск конкретных программ через DRI_PRIME=1 работает, но это не то что мне нужно. Мне нужно что бы иксы и все проги работали через эту видеокарту.

после установки в граб: GRUB_CMDLINE_LINUX_DEFAULT=»quiet splash radeon.runpm=0″ — включилось питание в дискретной видеокарте:

но она всё еще не активна.

По идее после этой команды (отложенное изменение видеокарты): sudo /sys/kernel/debug/vgaswitcheroo/switch нужно перелогиниться (НЕ выключить/включить).
Но у меня после этой команды при попытке разлогининия просто вырубается экран (не черный фон, а именно выключается) и не реагирует. Если эту команду не давать, то разлогиниться/залогиниться можно без проблем.

Согласно этому мануалу http://ubuntu.fliplinux.com/vgaswitcheroo.html :
1. Перешел в ctrl+alt+f1 терминал.
2. sudo service lightdm stop 3. echo «DDIS»|sudo tee /sys/kernel/debug/vgaswitcheroo/switch 4. гаснет (отключается) экран

В общем провернуть это дело в консольном режиме — не помогло.

Иксы с рендерингом через дискретку тебе не нужны. Ты хочешь, чтобы все иксовые приложения, ключая wm, запускались на дискретке. Насчёт wm я не уверен, но запускать всё остальное вполне можно. Соответственно, можно попробовать отредактировать инит скрипт и экспортировать DRI_PRIME после запуска иксов и, возможно, wm.

wm = windows manager? правильно понимаю?

мне нужно что бы анимации рабочего стола, окон — рендрились через дискретку, что бы glxgears — через дискретку работал сразу, скайп, фильмы через дискретку сразу по двойному щелчку на иконке программы или файла.

если это можно сделать через DRI_PRIME — отлично. Такой вариант тоже подойдет.

мне нужно что бы анимации рабочего стола, окон — рендрились через дискретку, что бы glxgears — через дискретку работал сразу, скайп, фильмы через дискретку сразу по двойному щелчку на иконке программы или файла.

Ты по-пробуй, и увидишь, что и через что рендерится. Я с циннамоном не знаком, как именно он работает не знаю. Возможно, если на интеграшке будет работать только wm, то её производительность тебя вполне устроит. Livecd с кедами пробовал у себя запускать? В них эффекты тоже тормозят? Если они не тормозят, то весьма вероятно, что переход на дискретку тебе ничем не поможет, а проблема в самом циннамоне.

А фильмы у тебя самое тяжёлое 3D? Зачем дискретка фильмам-то? Впрочем при экспорте DRI_PRIME и они будут на дискретке.

Ну тогда выбирай вариант и делай.

Пока я даже не представляю себе как в ярлык программы засунуть DRI_PRIME, вот команда в ярлыке: из ярлыка — ошибка запуска, из консоли если эту команду ввести — все отлично запускается.

А тем более я пока не представляю куда подставить этот DRI_PRIME что бы при запуске системы он по умолчанию пробовал запускать все проги, включая wm (кстати до сих пор точно не понял что это) с этим флагом.

И как увидеть что через что рендриться?

Кстати вот скрипт который запускает xorg

Это не ноут кривой, это Линукс кривой. На винде-то все ок.

exec DRI_PRIME=1 «$basedir»/Xorg «$@»

— при таком раскладе результат внешне как обычно — черный экран и моргает курсор. Единственный плюс — ctrl+alt+f1 — доступная консоль

— прописывал перед basedir, эффекта че то не наблюдаю или не знаю как наблюдать. glxgears запускаются на 60 fps, значит думаю на встроенной работают

Удаляешь все xorg.conf, которые ты создавал, возвращаешь всё в исходное состояние.

Убеждаешься что всё работает, как задумано. Что всё рендерится через интеграшку и что у тебя работает DRI_PRIME.

После этого, если всё ок, то у тебя должен быть файл /usr/share/xsessions/cinnamon.desktop или с похожим названием, содержащим cinnamon.

В этом файле есть строка Exec=/usr/bin/. . Содержимое этого файла кидай куда-нибудь на paste-сервис и давай сюда ссылку. Будем смотреть, что в нём можно исправить.

Любые упоминания DRI_PRIME=1 из конфигов убрать.

У тебя есть решение, как осуществить на винде рендеринг всего, включая рабочий стол, через видяху, не подключённую физически к видеовыводу? Или ты сюда так, покукарекать зашёл.

Читайте также:  Как удалить windows 10 с помощи командной строки

xorg.conf — удалил (переместил в хоум/документы, а то жалко) все работает на встроенной упоминания DRI_PRIME убрал

/usr/bin/cinnamon — бинарик. Только некоторые строчки читаются.

есть еще вот какие файлы

Ну ок. Тогда надо написать свою обёртку.

И попробовать залогиниться. Посмотреть, что будет.

Ну и в xsessions в строке Exec заменить cinnamon на cinnamon-prime, разумеется.

без vblank_mode=0 ты НЕ определишь. Этот параметр надо добавлять и с DRI_PRIME и без и сравнивать

Сказано ж тебе: сходи и почитай документацию. Ты используешь не тот драйвер.

Заметил один нюанс сейчас

DRI_PRIME=1 glxgears — дает нагрузку по 30-35% на каждое ядро (ядер у меня 4 шт по 1,6ггц без гипертрейдинга). vblank_mode — такая же ситуация. 30-35%

glxgears — 10-20% на каждое ядро

в спокойном состоянии (браузер открыт все таки) 5-10% на каждое ядро.

Теперь я не очень уверен, что он рендрит через видеокарту. Просто сильнее напрягает процессор. Есть способы проверить что рендрит конкретное приложение?

Сказано ж тебе: сходи и почитай документацию. Ты используешь не тот драйвер.

какую документацию? как ее найти? почему не тот?

radeon драйвер использовал и amdgpu пробовал. да к слову сказать и ati и noveau тоже пробовал.

сейчас вообще никакой в конфигах не прописывал.

radeon — драйвер который тебе нужен.

nouveau — драйвер для нвидий

amdgpu — драйвер для новых радеонов

Он, наверное, драйверы X.Org перечислял, раз у него в списке ati есть.

Так я про X.Org драйвера и говорил. Под такими именами они в конфиг иксов и прописываются.

Вот такую, например.

использовал и amdgpu пробовал. да к слову сказать и ati и noveau тоже пробовал.

Я тебе выше объяснял про эти драйвера. Зачем ты пробуешь драйвера не для своей видеокарты?

xf86-video-ati прописывается как radeon? Ну ладно.

Вот ты выше человеку сылку на доки давал, мог бы по ним и пробежать глазами.

Я ограничился первым абзацем 🙃

Я тебе выше объяснял про эти драйвера. Зачем ты пробуешь драйвера не для своей видеокарты?

Я уже попробовал все другие драйвера до этих объяснений. А така как вопросы от разных участников «а какие драйвера пробовал» периодически возникают — могу смело отвечать, что все драйвера пробовал в разных формах.

На текущий момент эксперименты прекратил с драйверами.

DRI_PRIME=1 glxgears -info — все таки показывает что рендрить начинает дискретная видеокарта. Проц почему так грузит — хз.

скачал утилиту driconf. там очень много настроек видеокарты, но выбрать другую видеокарту — увы не понял как, либо это нельзя сделать.

Вот ты выше человеку сылку на доки давал

арч доку я изучил вдоль и поперёк со словарем и гуглом

скрипты написал, перезапустил. Из видимых изменений — значки на рабочем столе выровнялись по умолчанию.

Как понять что используется вторая карта?

В renderer string он будет писать название чипа, который рендерит. Ну и в xrand —listproviders убедись, что порядок чипов без изменений. Хз, может ли он измениться.

то не ноут кривой, это Линукс кривой. На винде-то все ок.

Ложь, там точно также вывод через встроенную видеокарту идёт.

На текущий момент эксперименты прекратил с драйверами.

А не нужны никакие «эксперименты». Нужно просто прочитать Wiki и выбрать нужный драйвер.

Верни сейчас всю конфигурацию (X.Org, параметры ядра и что ты там ещё менял) к искоробочному состоянию и сделай всё заново в соответствии с документацией:

The bus ID here is 1:0:0.

glxgears запускаются на 60 fps, значит думаю на встроенной работают

это выставлено ограничение — умеючи можно MX400 на иксах до 300 fps в шестиренках раскочегарить.

с радеоном не должно быть проблем вообще — ему даже проприетарщина не нужна, ставишь # firmware-amd-graphics и все само собой взлетает как по волшебству. это с невидио проблемы — на свободном драйвере через пень колоду чих-пых

xrandr на месте:

echo $DRI_PRIME пустой? Тогда получается экспорт не удался.

Нужно копать, где gdm (или у тебя lightdm?) выставляет переменные для сессии и подставить export туда. Но именно после старта иксов, ибо если выставлять его до, то вывод изображения не работает.

ЗЫЖ К циннамону DRI_PRIME по-любому должен был примениться, я правда не знаю, как это проверить именно для wm. Отображению эффектов это помогло? Если нет, то походу уже ничего не поможет и все эксперименты можно сворачивать.

И, кстати, непонятно, почему у тебя в провайдерах два раза дискретка указана. Но тут у меня тоже идей нет.

echo $DRI_PRIME — пуст.
echo DRI_PRIME — некорректная команда, выводит DRI_PRIME

хм.. сейчас мучаюсь compiz ставлю. А то встроенные эффекты в cinniamon не дают возможности компизу поучавствовать.

3D куб стола хочу сделать

с радеоном не должно быть проблем вообще — ему даже проприетарщина не нужна, ставишь # firmware-amd-graphics

у меня стоит пакет firmware-linux или как-то так. В общем у них одни и теже драйвера почти, но на мою карту ест и в моем пакете и в этом. Так что это все страдания уже при наличии драйверов.

Читайте также:  Comic reader для windows

нифига это разная борода не имеющаа друг к другу никакого отношения, посмотрите установлен ли у вас firmware-amd-graphics

хм.. сейчас мучаюсь compiz ставлю. А то встроенные эффекты в cinniamon не дают возможности компизу поучавствовать.

Штатному циннамоновскому помогло? То, что раньше тормозило тормозить перестало?

Если ты собрался переезжать на compiz, то весьма вероятно ему вполне хватит встройки, соответственно можно будет запускать на дискретке только то, что нужно, добавляя DRI_PRIME=1 в ярлык перед командой запуска. Но вот с тем, чтобы срастить его с циннамоном я не помогу. Я кдеешник, в гномах и производных ни чего не понимаю.

С firmware можешь особо не заморачиваться, по крайней мере если в journalctl -kb | grep -i ‘drm\|gpu’ никакого криминала нет. Скорее всего у тебя всё установлено, без него 3d бы не работало вообще.

Так сорри. Я по ходу лохонулся с установкой Cinnamon (первый раз ставил)

Cinnamon и Compiz не совместимы, а компиз это то что делает линь удобным. Собственно не представляю линух десктопный без компиза.

В итоге я снес все, поставил Linux Mint 18.3 Mate. Он из коробки идет с компизом. Установил в grub параметр включения питания дискретной карты.

Скрипт-обертку для МАТЕ пока не делалал, так как не особо export работал и в прошлый раз, но в принципе сделать могу попробовать.

По внешнему виду вроде жестко не тормозит и не лагает. 3D куб прокручивается сносно. Подтормаживает только анимация сворачивания и разворачивания.

У компиза есть афигенная штука (у него много таких штук, но эта особенно полезна сейчас) — бенчмарк. Он на экран выводит кличество кадров в секунду с которым сейчас работает.

Когда крутит рабочий стол 3Д — 50-55 fps
Когда просто стоит и ничего не делает 1-2 fps
Когда сворачивается окно — 15 fps
Когда перетаскиваю окно — 30-40 fps

В принципе не плохо было бы компиз запустить на дискретке. В ярлыки какое то костыльное решение добавлять DRI_PRIME, тем более у меня не получилось на MATE в том числе это сделать.

Программа не запускается, хотя если эту же команду (например DRI_PRIME=1 firefox %u) выполнить из консоли — все запускается.

думаю стоит пошаманить с экспортом может команду в автозагрузку какую нить установить

думаю стоит пошаманить с экспортом может команду в автозагрузку какую нить установить

простая команда «export DRI_PRIME=1» в автозагрузке не помогла наверно. После загрузки запускаю терминал, ввожу echo DRI_PRIME, а ответа нет.

При этом если ввести в терминал export DRI_PRIME=1, а следующей командой запустить glxgears без каких либо дополнений, то 1000fps показывает, dri prime работтает. Просто это видимо другая сессия в терминале и после закрытия и открытия терминала — эта настройка пропадает и снова 60fps glxgears выдает

попробовал запустить игрушку extremetuxracer (DRI_PRIME=1 etr). Запускается только начальный экран и зависает, музыка на фоне играет. При попытках выйти — выкидывает вообще из сесси на экран ввода логина/пароля. (хинт — если не в полноэкранном режиме открывать, то работает норм)

fps всегда показывает 59 кадров, наверно не показатель.

Пробовал firefox запустить из консоли и протестить вот эту штуку: https://webglsamples.org/aquarium/aquarium.html

с и без DRI_PRIME флагом. Результат одинаков. на 1000 рыб — 30fps, на 5000 рыб — 16 fps.

Флаг не работает?

Chrome вообще отказывается работать с ускорением. Только софтверное ускорение, даже на гугл ишшью заведены что бы те включили поддержку АМД дров.

Так что хром в топку.

с и без DRI_PRIME флагом. Результат одинаков. на 1000 рыб — 30fps, на 5000 рыб — 16 fps.

я очень удивлен, но запустился для интереса на винде (она второй операционкой стоит)

Там с дровами все хорошо и наглядно интерфейсно. Хром заработал сразу, все поддерживает и пользуется ускорением
22fps — 5000 рыб.
60fps — 1000 рыб.

Firefox выдал те-же результаты почти.

на 1000 рыб — 45fps,
на 5000 рыб — 16 fps.

Странно, не значит ли это, что видеокарта дискретная работает всегда на линуксе? просто это не так очевидно как на винде

В ярлыки какое то костыльное решение добавлять DRI_PRIME, тем более у меня не получилось на MATE в том числе это сделать.

Это штатное решение. Альтернатива только делать экспорт на уровне сессии.

Странно, не значит ли это, что видеокарта дискретная работает всегда на линуксе?

Сколько бенчмарк фокса показывает на встройке в винде? Сколько на встройке в линуксе?

если не в полноэкранном режиме открывать, то работает норм

Попробуй в компизе отключить режим отключения композитинга для полноэкранных окон, емнип он там есть.

Источник

Оцените статью