Я использую Xubuntu 18.04 на моем Dell Inpiron 15 7548. Машина имеет интегрированную графику HD 5500 и выделенную карту AMD R7. Я несколько раз пытался получить доступ к своей выделенной карте, но всегда сдавался, поэтому я действительно хотел бы попытаться докопаться до сути, чтобы я мог действительно использовать свое оборудование.
Во-первых, обе карты определяются отлично:
narameh@Hydrogen:~$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 5500 (rev 09)
08:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Opal XT [Radeon R7 M265/M365X/M465] (rev ff)
Я попробовал следовать собственному руководству Dell по использованию switcheroo, чтобы просто переключить всю систему на выделенную карту, которое можно найти здесь: https://www.dell.com/support/article/uk/en/ukbsdt1/sln298475/a-guide-to-hybrid-video-on-dell-pcs-with-an-ubuntu-operating-system?lang=en
Вот некоторые результаты:
Переключатель VGA включен:
narameh@Hydrogen:~$ grep -i switcheroo /boot/config-*
/boot/config-4.15.0-50-generic:CONFIG_VGA_SWITCHEROO=y
/boot/config-4.15.0-51-generic:CONFIG_VGA_SWITCHEROO=y
Файл переключения существует:
narameh@Hydrogen:~$ sudo ls -l /sys/kernel/debug/vgaswitcheroo/switch
-rw-r--r-- 1 root root 0 Jun 12 16:07 /sys/kernel/debug/vgaswitcheroo/switch
Состояние по умолчанию:
narameh@Hydrogen:~$ sudo cat /sys/kernel/debug/vgaswitcheroo/switch
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :DynOff:0000:08:00.0
В руководстве предполагается, что это либо Pwr, либо Off, но поскольку это гибридная система, для меня это DynOff. Следовательно, когда я пытаюсь включить отключенный GPU согласно инструкции, ничего не происходит, так как он на самом деле не отключен, а просто динамически выключен. Это должно происходить как root, иначе я не смогу выполнить echo из-за отсутствия разрешений.
narameh@Hydrogen:~$ sudo su
root@Hydrogen:/home/narameh# echo ON > /sys/kernel/debug/vgaswitcheroo/switch
root@Hydrogen:/home/narameh# cat /sys/kernel/debug/vgaswitcheroo/switch
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :DynOff:0000:08:00.0
Далее я попытался использовать DRI_PRIME, чтобы запустить что-то на моей карте AMD, чтобы посмотреть, смогу ли я заставить ее вообще включиться. Я могу на секунду, запустив
DRI_PRIME=1 glxinfo
в одном окне терминала и спам
narameh@Hydrogen:~$ sudo cat /sys/kernel/debug/vgaswitcheroo/switch
в другом. Однако первый терминал затем выдает кучу ошибок, и мы возвращаемся к DynOff. Вставьтеbin вывода ошибок:https://pastebin.com/gJ4StVLS
Поиск в Google кода ошибки привел меня к этой теме с похожей проблемой:https://www.linuxquestions.org/questions/slackware-14/current-14-2-and-dri-3-and-dri_prime-ain%27t-working-4175578108/ Более подробную информацию о назначении этого плаката можно найти здесь:https://kaosx.us/docs/hybrid_gfx/
Выполнение этих шагов дает мне следующее
DRI, похоже, в порядке:
narameh@Hydrogen:~$ cat /var/log/Xorg.0.log | grep DRI
[ 45.527] (II) RADEON(G0): [DRI2] Setup complete
[ 45.527] (II) RADEON(G0): [DRI2] DRI driver: radeonsi
[ 45.527] (II) RADEON(G0): [DRI2] VDPAU driver: radeonsi
[ 46.672] (II) modeset(0): [DRI2] Setup complete
[ 46.672] (II) modeset(0): [DRI2] DRI driver: i965
[ 46.672] (II) modeset(0): [DRI2] VDPAU driver: i965
[ 46.704] (II) GLX: Initialized DRI2 GL provider for screen 0
narameh@Hydrogen:~$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x66 cap: 0x9, Source Output, Sink Offload crtcs: 3 outputs: 2 associated providers: 1 name:modesetting
Provider 1: id: 0x41 cap: 0x6, Sink Output, Source Offload crtcs: 2 outputs: 0 associated providers: 1 name:OLAND @ pci:0000:08:00.0
narameh@Hydrogen:~$ xrandr --setprovideroffloadsink 0x41 0x66
narameh@Hydrogen:~$
Обратите внимание, что ошибок не возникает, так что эта команда, похоже, работает нормально. Когда я затем пытаюсь запустить на любой из карт, встроенная Intel работает нормально:
narameh@Hydrogen:~$ DRI_PRIME=0 glxinfo | grep "OpenGL vendor string"
OpenGL vendor string: Intel Open Source Technology Center
Но AMD все еще выдает те же ошибки:https://pastebin.com/W56z6z3L
В конце концов пользователь в теме связывает свои проблемы с плохим коммитом ядра и делает откат, но поскольку это а) тема с 2016 года и б) я недостаточно продвинутый пользователь, чтобы возиться со своим ядром, для меня это не вариант.
Я могу найти еще несколько похожих ошибок, которые, по-видимому, связаны с версиями ядра (например,https://bugs.freedesktop.org/show_bug.cgi?id=102800на Ubuntu 17.01 или этотhttps://bugs.freedesktop.org/show_bug.cgi?id=94874)
В обеих темах предлагается добавить radeon.nopm=0 в загрузку ядра, но я не решаюсь пробовать это без каких-либо указаний, поскольку недостаточно разбираюсь в том, что делаю.
Надеюсь, из этого поста понятно, что я приложил усилия, чтобы попытаться решить эту проблему самостоятельно, но упираюсь в пределы своих знаний и не хочу портить систему, изменяя то, чего не понимаю или не могу отменить, если из-за этого загружу черный экран. Помощь от кого-то более продвинутого была бы крайне признательна.
tldr: дискретная AMD в DynOff не может быть принудительно включена с помощью VGA_switcheroo. DRI_PRIME может общаться с дискретной картой, но ошибки с тем, чтокажетсябыть проблемой ядра? Пользователь на пределе своих знаний и боится что-то сломать. Помощь приветствуется.
EDIT: понял, что включение версии ядра и т. д. было бы полезно:
narameh@Hydrogen:~$ uname -r
4.15.0-51-generic
narameh@Hydrogen:~$ lspci -nnk | grep -i vga -A3
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 5500 [8086:1616] (rev 09)
Subsystem: Dell HD Graphics 5500 [1028:066f]
Kernel driver in use: i915
Kernel modules: i915
--
08:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Opal XT [Radeon R7 M265/M365X/M465] [1002:6604] (rev ff)
Kernel driver in use: radeon
Kernel modules: radeon, amdgpu
EDIT 2: Также полезно добавить, что в моем биосе нет опций для включения/выключения моих графических процессоров. Никаких опций, связанных с видео, вообще.
решение1
К моему полному недоумению, теперь это работает. Имейте в виду, что я пытался заставить это работать больше года. Ничего не получалось. Сегодня я решил сделать перерыв после написания этого поста. Я перезагрузился, чтобы дважды проверить параметры BIOS, затем очистил неиспользуемые ppas. Затем я запустил DRI_PRIME=1 glxinfo, чтобы посмотреть, смогу ли я получить больше информации из журнала ошибок, и это просто... заработало. Честно говоря, я понятия не имею, что произошло. Ни перезагрузка, ни удаление некоторых неиспользуемых ppas не должны были повлиять на это вообще. Какого хрена? Очень рад, что теперь это работает! Считайте, что эта проблема решена.