Estou executando o Xubuntu 18.04 no meu Dell Inpiron 15 7548. A máquina possui gráficos HD 5500 integrados e uma placa AMD R7 dedicada. Eu tentei várias vezes ter acesso ao meu cartão dedicado, mas sempre acabei desistindo, então eu realmente gostaria de tentar descobrir isso para poder realmente usar meu hardware.
Em primeiro lugar, ambos os cartões são detectados perfeitamente:
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)
Tentei seguir o guia da própria Dell sobre como usar o switcheroo para mudar todo o sistema para a placa dedicada, encontrado aqui: https://www.dell.com/support/article/uk/en/ukbsdt1/sln298475/a-guide-to-hybrid-video-on-dell-pcs-with-an-ubuntu-operating-system?lang= pt
Aqui estão alguns resultados:
O switcheroo VGA está ativado:
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
O arquivo de troca existe:
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
Estado padrão:
narameh@Hydrogen:~$ sudo cat /sys/kernel/debug/vgaswitcheroo/switch
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :DynOff:0000:08:00.0
O tutorial assume que é Pwr ou Off, mas como este é um sistema híbrido, para mim é DynOff. Portanto, quando tento ligar a GPU desconectada conforme as instruções, nada acontece, pois ela não está realmente desconectada, apenas desligada dinamicamente. Isso tem que acontecer como root, caso contrário não consigo fazer eco por falta de permissões.
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
Em seguida, tentei usar DRI_PRIME para executar algo em minha placa AMD para ver se conseguia ligá-la. Eu posso por um segundo, correndo
DRI_PRIME=1 glxinfo
em uma janela de terminal e enviar spam
narameh@Hydrogen:~$ sudo cat /sys/kernel/debug/vgaswitcheroo/switch
no outro. No entanto, o primeiro terminal apresenta uma série de erros e voltamos ao DynOff. Pastebin de saída de erro:https://pastebin.com/gJ4StVLS
Pesquisando o código de erro no Google, encontrei este tópico com um problema semelhante:https://www.linuxquestions.org/questions/slackware-14/current-14-2-and-dri-3-and-dri_prime-ain%27t-working-4175578108/ Mais informações sobre o que este pôster está fazendo aqui:https://kaosx.us/docs/hybrid_gfx/
Seguir os passos me dá o seguinte
DRI parece estar bem:
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:~$
Observe que não gera erros, então este comando parece funcionar bem. Quando tento rodar em qualquer uma das placas, o Intel integrado funciona bem:
narameh@Hydrogen:~$ DRI_PRIME=0 glxinfo | grep "OpenGL vendor string"
OpenGL vendor string: Intel Open Source Technology Center
Mas a AMD ainda apresenta os mesmos erros:https://pastebin.com/W56z6z3L
No final, o usuário no thread rastreia seus problemas até um commit incorreto do kernel e reverte, mas como este é a) um thread de 2016 e b) eu não sou um usuário avançado o suficiente para mexer no meu kernel, isto é não é uma opção para mim.
Posso encontrar vários outros erros semelhantes que parecem relacionados às versões do kernel (por exemplohttps://bugs.freedesktop.org/show_bug.cgi?id=102800no Ubuntu 17.01 ou estehttps://bugs.freedesktop.org/show_bug.cgi?id=94874)
Em ambos os tópicos, é sugerido adicionar radeon.nopm=0 à inicialização do kernel, mas hesito em tentar fazer isso sem alguma orientação, pois não sei o suficiente sobre o que estou fazendo.
Espero que tenha ficado claro nesta postagem que me esforcei para tentar resolver isso sozinho, mas estou chegando aos limites do meu conhecimento e não quero bagunçar meu sistema mudando coisas que não entendo ou não posso desfazer se eu acabar inicializando em uma tela preta por causa disso. Alguma ajuda de alguém mais avançado seria extremamente apreciada.
tldr: AMD discreto está em DynOff e não pode ser forçado com VGA_switcheroo. DRI_PRIME pode se comunicar com placa discreta, mas erros com o quepareceser um problema de kernel? O usuário está no fim de seu conhecimento e com medo de quebrar coisas. Ajuda apreciada.
EDIT: realizado incluindo a versão do kernel, etc. seria útil:
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: Também é útil adicionar que não há opções para ligar/desligar minhas GPUs em meu BIOS. Nenhuma opção relacionada a vídeo.
Responder1
Para minha total perplexidade, agora funciona. Tenha em mente que tenho tentado fazer com que isso funcione há mais de um ano. Isso nunca aconteceu. Hoje resolvi fazer uma pausa depois de escrever esse post. Reiniciei para verificar minhas opções de BIOS e limpei meus ppas não utilizados. Então executei DRI_PRIME=1 glxinfo para ver se conseguia obter mais informações do log de erros e simplesmente... funcionou. Sinceramente, não tenho ideia do que aconteceu. Nem a reinicialização nem a exclusão de alguns ppas não utilizados deveriam ter afetado isso. Que merda. Muito feliz que agora funcione! Considere este problema resolvido.