LINUX.ORG.RU

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

 , , ,


1

1

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

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

Облазил интернет, облазил этот форму, кое-где позадавал вопросов. Ближайшие темы ко мне темы:
http://forum.ubuntu.ru/index.php?topic=289447.0
Не работает видеокарта AMD
http://ubuntu.fliplinux.com/vgaswitcheroo.html
Результата увы нет.

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

$ lspci | grep VGA
00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] BeaverCreek [Radeon HD 6620G]
02:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Seymour [Radeon HD 6400M/7400M Series]

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

$ sudo cat /sys/kernel/debug/vgaswitcheroo/switch
0:IGD:+:Pwr:0000:00:01.0
1:DIS: :DynOff:0000:02:00.0

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

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

$ sudo cat /sys/kernel/debug/vgaswitcheroo/switch
0:IGD:+:Pwr:0000:00:01.0
1:DIS: :Pwr:0000:02:00.0

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

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

Согласно этому мануалу 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. гаснет (отключается) экран

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

Ответ на: комментарий от Ivan_qrt

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

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

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

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

evetrov
() автор топика
Ответ на: комментарий от evetrov

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

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

фильмы через дискретку

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

Такой вариант тоже подойдет.

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

Ivan_qrt ★★★★★
()
Ответ на: комментарий от Ivan_qrt

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

DRI_PRIME=1 /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=telegram-desktop --file-forwarding org.telegram.desktop -- @@u %u @@

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

evetrov
() автор топика
Ответ на: комментарий от Ivan_qrt

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

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

/usr/bin/Xorg

#!/bin/sh
#
# Execute Xorg.wrap if it exists otherwise execute Xorg directly.
# This allows distros to put the suid wrapper in a separate package.

basedir=/usr/lib/xorg
if [ -x "$basedir"/Xorg.wrap ]; then
	exec "$basedir"/Xorg.wrap "$@"
else
	exec "$basedir"/Xorg "$@"
fi


по идее сюда писать [br]
exec DRI_PRIME=1 "$basedir"/Xorg "$@"

а после скрипта "export DRI_PRIME=1" так?
evetrov
() автор топика
Ответ на: комментарий от evetrov

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

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

«export DRI_PRIME=1»

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

evetrov
() автор топика
Ответ на: комментарий от evetrov

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

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

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

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

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

Ivan_qrt ★★★★★
()
Последнее исправление: Ivan_qrt (всего исправлений: 1)
Ответ на: комментарий от anonymous

На винде-то все ок.

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

Ivan_qrt ★★★★★
()
Ответ на: комментарий от Ivan_qrt

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

/usr/share/xsessions/ https://paste.ubuntu.com/p/jVr6bRNdJR/

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

/usr/bin/cinnamon2d:

#!/bin/bash
CLUTTER_PAINT=disable-clipped-redraws:disable-culling LIBGL_ALWAYS_SOFTWARE=1 CINNAMON_SOFTWARE_RENDERING=1 CINNAMON_2D=1 CINNAMON_SLOWDOWN_FACTOR=0.0001 MUFFIN_NO_SHADOWS=1 CLUTTER_DEFAULT_FPS=15 cinnamon $@

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

# ls -F | grep cinnamon
cinnamon*
cinnamon2d*
cinnamon-control-center*
cinnamon-desktop-editor*
cinnamon-extension-tool*
cinnamon-file-dialog*
cinnamon-json-makepot*
cinnamon-killer-daemon*
cinnamon-launcher*
cinnamon-looking-glass*
cinnamon-menu-editor*
cinnamon-preview-gtk-theme*
cinnamon-remove-application@
cinnamon-screensaver*
cinnamon-screensaver-command*
cinnamon-screensaver-lock-dialog*
cinnamon-session*
cinnamon-session-cinnamon*
cinnamon-session-cinnamon2d*
cinnamon-session-quit*
cinnamon-settings*
cinnamon-settings-daemon@
cinnamon-settings-users*
cinnamon-slideshow*
cinnamon-subprocess-wrapper*

evetrov
() автор топика
Ответ на: комментарий от evetrov

/usr/bin/cinnamon - бинарик.

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

cat << EOF > /usr/bin/cinnamon-prime
#!/bin/bash

export DRI_PRIME=1

cinnamon $@
EOF

chmox +x /usr/bin/cinnamon-prime

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

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

Ivan_qrt ★★★★★
()
Последнее исправление: Ivan_qrt (всего исправлений: 1)
Ответ на: комментарий от evetrov

glxgears запускаются на 60 fps

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

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

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

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

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

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

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

evetrov
() автор топика
Ответ на: комментарий от sudopacman

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

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

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

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

evetrov
() автор топика
Ответ на: комментарий от Behem0th

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

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

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

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

sudopacman ★★★★★
()
Ответ на: комментарий от evetrov

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

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

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

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

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

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

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

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

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

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

evetrov
() автор топика
Ответ на: комментарий от Ivan_qrt

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

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

evetrov
() автор топика
Ответ на: комментарий от evetrov
glxinfo | grep -i opengl
DRI_PRIME=0 glxinfo | grep -i opengl
DRI_PRIME=1 glxinfo | grep -i opengl

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

Ivan_qrt ★★★★★
()
Ответ на: комментарий от anonymous

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

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

steemandlinux ★★★★★
()
Ответ на: комментарий от evetrov

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

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

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

To get your bus ID:

$ lspci | grep VGA

01:00.0 VGA compatible controller: nVidia Corporation G96 [GeForce 9600M GT] (rev a1)
The bus ID here is 1:0:0.

sudopacman ★★★★★
()
Ответ на: комментарий от evetrov

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

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

amd_amd ★★★★★
()

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

amd_amd ★★★★★
()
Ответ на: комментарий от Ivan_qrt
$ DRI_PRIME=0 glxgears -info | grep -i renderer
GL_RENDERER   = AMD SUMO (DRM 2.50.0 / 4.13.0-36-generic, LLVM 5.0.0)

$ DRI_PRIME=1 glxgears -info | grep -i renderer
GL_RENDERER   = AMD CAICOS (DRM 2.50.0 / 4.13.0-36-generic, LLVM 5.0.0)

$ glxgears -info | grep -i renderer
GL_RENDERER   = AMD SUMO (DRM 2.50.0 / 4.13.0-36-generic, LLVM 5.0.0)

xrandr на месте:

 $ xrandr --listproviders
Providers: number : 3
Provider 0: id: 0x78 cap: 0x9, Source Output, Sink Offload crtcs: 2 outputs: 3 associated providers: 2 name:SUMO @ pci:0000:00:01.0
Provider 1: id: 0x43 cap: 0x6, Sink Output, Source Offload crtcs: 4 outputs: 0 associated providers: 2 name:CAICOS @ pci:0000:02:00.0
Provider 2: id: 0x43 cap: 0x6, Sink Output, Source Offload crtcs: 4 outputs: 0 associated providers: 2 name:CAICOS @ pci:0000:02:00.0

evetrov
() автор топика
Ответ на: комментарий от evetrov

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

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

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

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

Ivan_qrt ★★★★★
()
Последнее исправление: Ivan_qrt (всего исправлений: 1)
Ответ на: комментарий от Ivan_qrt

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

lightdm у меня.

Отображению эффектов это помогло?

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

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

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

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

evetrov
() автор топика
Ответ на: комментарий от evetrov

firmware-linux или как-то так

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

amd_amd ★★★★★
()
Ответ на: комментарий от evetrov

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

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

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

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

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

Ivan_qrt ★★★★★
()
Ответ на: комментарий от Ivan_qrt

Так сорри... Я по ходу лохонулся с установкой 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) выполнить из консоли - все запускается.

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

evetrov
() автор топика
Ответ на: комментарий от evetrov

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

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

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

evetrov
() автор топика
Ответ на: комментарий от evetrov

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

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

evetrov
() автор топика
Ответ на: комментарий от evetrov

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

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

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

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

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

evetrov
() автор топика
Ответ на: комментарий от evetrov

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

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

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

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

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

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

evetrov
() автор топика
Ответ на: комментарий от evetrov

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

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

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

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

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

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

Ivan_qrt ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.