Como trabalhar com 2 placas gráficas no Linux
É comum alguns notebooks terem 2 placas gráficas, em um sistema híbrido, há vários anos.
Este sistema permite trabalhar com restrições de recursos para economizar energia ou obter o máximo desempenho do sistema.
Usualmente, a segunda placa gráfica é chamada de “discreta” (discrete graphic card) e já foi mais difícil lidar com ela, no GNU/Linux, do que é hoje.
Para contextualizar, este post é baseado em um laptop Dell Inspiron 5448, com 2 placas gráficas:
- a principal: Intel Graphics 5500.
- a secundária: AMD Radeon R7 M260.
É um equipamento de 2016, mas… os princípios ainda são válidos.
No lado do software, estamos rodando o Ubuntu 22.04 LTS, com o GNOME Shell 42.2.
Como escolher a placa gráfica a ser usada no GNOME
Atualmente, é possível escolher a placa gráfica que você deseja destinar a um determinado programa, com 2 cliques.
Basta clicar no ícone, com o botão direito do mouse/touchpad e escolher a opção Launch using Discrete Graphics Card (se o seu sistema estiver em inglês).

O sistema operacional System76, permite fazer a escolha nas opções do menu de inicialização — que, infelizmente, não está disponível para mim. Veja a imagem, abaixo.
No caso do System76, a escolha feita irá valer para toda a sessão e todos os aplicativos disparados depois de ter feito a opção. Em muitos casos, esta abordagem pode ser mais confortável.
Se quiser experimentar a opção do System76, instale o gestor de extensões do GNOME Shell:
sudo apt install gnome-shell-extension-manager
Em seguida, pressione a tecla Super e procure pelo “extension manager”…

Dentro do Extension Manager, selecione o botão Browse, no topo do painel. Depois, faça uma pesquisa por “prime”, para encontrar as extensões disponíveis para a sua distro.
Como você pode ver, na imagem acima, todas são “Não suportado” para mim — mas não tem problema, por que o Ubuntu 22.04 já resolveu o problema de outra forma.
Veja o significado de cada opção:
- Prime Indicator — é a solução adotada no System76, para direcionar todas as tarefas para a placa da sua escolha.
- GNOME Run With PRIME — vai dar opção de escolher a placa, ao clicar sobre o ícone de um programa.
- PRIMElaunch-gnome — é a solução adotada no Ubuntu 22.04 LTS, conforme uma das imagens acima, que coloca as alternativas sobre os ícones do dash.
Como obter informações sobre os dispositivos gráficos instalados no sistema, pelo terminal
Para obter mais informações sobre os dispositivos gráficos instalados no seu sistema, use o comando lshw:
lshw -c display
Abaixo, segue o meu resultado, com as informações sobre os nomes dos dispositivos em destaque:
WARNING: you should run this program as super-user. *-display description: VGA compatible controller product: HD Graphics 5500 vendor: Intel Corporation physical id: 2 bus info: pci@0000:00:02.0 logical name: /dev/fb0 version: 09 width: 64 bits clock: 33MHz capabilities: vga_controller bus_master cap_list rom fb configuration: depth=32 driver=i915 latency=0 resolution=1366,768 resources: irq:49 memory:c1000000-c1ffffff memory:d0000000-dfffffff ioport:5000(size=64) memory:c0000-dffff *-display description: Display controller product: Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445 / 530/535 / 620/625 Mobile] vendor: Advanced Micro Devices, Inc. [AMD/ATI] physical id: 0 bus info: pci@0000:04:00.0 version: 00 width: 64 bits clock: 33MHz capabilities: bus_master cap_list rom configuration: driver=amdgpu latency=0 resources: irq:50 memory:b0000000-bfffffff memory:c0000000-c01fffff ioport:3000(size=256) memory:c2000000-c203ffff memory:c2040000-c205ffff WARNING: output may be incomplete or inaccurate, you should run this program as super-user.
Observação: Em alguns sistemas pode ser necessário instalar o lshw. O pacote de instalação está disponível nos repositórios oficiais. E você poderá obter informações mais detalhadas se executar o lshw como root.
Outra forma de obter detalhes sobre os dispositivos gráficos instalados é com o lspci. No exemplo, abaixo, ele mostra se os módulos e drivers das minhas placas estão instalados e rodando:
lspci -knn | grep -A 2 -i "display\|vga" 00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 5500 [8086:1616] (rev 09) Subsystem: Dell HD Graphics 5500 [1028:0643] Kernel driver in use: i915 -- 04:00.0 Display controller [0380]: Advanced Micro Devices, Inc. [AMD/ATI] Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445 / 530/535 / 620/625 Mobile] [10... Subsystem: Dell Radeon R7 M260/M265 [1028:0643] Kernel driver in use: amdgpu
Outra forma de obter informações sobre as placas gráficas é usar o glxinfo. Se ele não estiver instalado, use o seu gerenciador de instalação para encontrar e instalar o pacote “mesa-utils”:
sudo apt install mesa-utils
Como escolher a placa gráfica secundária no terminal
Se você quer rodar um programa a partir do console (TUI) ou do terminal, use o DRI_PRIME.
Em um sistema de placas gráficas híbridas, com 2 opções, uma delas será a placa gráfica 0 e a outra a 1.
Usualmente, 0 se refere à placa gráfica embutida ou integrada ao sistema a opção 1, se refere à segunda placa.
Se quiser ter certeza, use o glxinfo em conjunto com o DRI_PRIME:
DRI_PRIME=0 glxinfo | grep -i device
DRI_PRIME=1 glxinfo | grep -i device

Este mesmo princípio pode ser usado para rodar qualquer programa a partir do terminal, direcionando a sua saída a uma placa gráfica ou outra.
Por exemplo, se quiser rodar o darktable do terminal, usando a placa secundária, use DRI_PRIME=1:
DRI_PRIME=1 darktable
Simples, assim.