Como faço para mudar meu controlador de vídeo para Radeon em vez dos gráficos Intel integrados?

Como faço para mudar meu controlador de vídeo para Radeon em vez dos gráficos Intel integrados?

Distribuição:Pop OS 19.10
Computador portátil:Notebook HP 15-bs185tx

Placa de vídeo:

  • Gráficos AMD Radeon™ 520 (2 GB DDR3 dedicados)
  • Gráficos UHD 620 da Intel Corporation

Tentei quase todas as soluções disponíveis online, mas nada funciona. Tanto o VGA quanto o Display Controller estão rodando em meus gráficos Intel integrados. Usei vários comandos, incluindo este, lspci -k | grep -EA3 'VGA|3D|Display'para ver meus adaptadores gráficos ativos. Por favor, deixe-me saber se você tiver alguma dúvida sobre o problema.

Obrigado!

Responder1

TL;DR (mas os valores 1 0podem não estar corretos no seu sistema):

$ xrandr --setprovideroffloadsink 1 0
$ export DRI_PRIME=1
$ glxinfo | grep "OpenGL renderer string"

Se esse recurso não existir no nível do hardware, isso não será possível, mas existe uma alternativa.

Isto é mostrado noDocumentação do Switcheroo VGA:

vga_switcheroo é o subsistema Linux para gráficos híbridos de laptop. Eles vêm em dois sabores:

  • muxed: GPUs duplas com um chip multiplexador para alternar saídas entre GPUs.
  • muxless: GPUs duplas, mas apenas uma delas está conectada às saídas. O outro é usado apenas para descarregar a renderização, seus resultados serão copiados pelo PCIe para o framebuffer. No Linux isso é suportado com DRI PRIME.

Os gráficos híbridos começaram a aparecer no final dos anos 1990 e inicialmente eram todos mixados.Laptops mais novos mudaram para uma arquitetura sem mux por razões de custo. Uma exceção notável é o MacBook Pro, que continua a usar um mux.

Então, presumo que seu hardware sejasem mux, assim:

      ╔═══════════════╗
      ║               ║
      ║    display    ║
      ║               ║
      ╚═══════════════╝
       ╭───╯       X
       │           ┊
┌────────┐       ┌────────┐
│        │       │        │
│  iGPU  │───────│  dGPU  │
│        │       │        │
└────────┘       └────────┘

Embora alguma boa documentação possa ser encontrada (por exemplo: emArchlinux), não consegui encontrar algunsoficialdocumentação definitiva autorizada para o uso de DRI_PRIME. A única documentação talvez semi-oficial que encontrei foi para ... o novo driver da Nvidia e o jogo de palavrasOptimus/PRIME:

Usando Optimus/Prime

'PRIME GPU offloading' e 'Reverse PRIME' é uma tentativa de suportar gráficos híbridos sem mux no kernel Linux.

Embora o nome provavelmente tenha se originado do suporte inicial da Nvidia, é claro que é genérico e funciona com AMD.

Você pode consultar e alterar configurações usando oxrandrcomando:

--listproviders
Relate informações sobre os provedores disponíveis.

--setprovideroutputsource provider source
Defina source como a origem das imagens de saída de exibição para o provedor. Isso só é possível se a origem e o provedor tiverem os recursos Source Output e Sink Output, respectivamente. Se source for 0x0, então o provedor está desconectado de sua fonte de saída atual.

--setprovideroffloadsink provider sink
Defina o provedor como um dispositivo de transferência de renderização para o coletor.Isso só é possível se o provedor e o sink tiverem os recursos Source Offload e Sink Offload, respectivamente. Se o coletor for 0x0, o provedor será desconectado de seu coletor de descarregamento de renderização atual.

Por exemplo, também com um laptop usando Intel iGPU e alguns AMD dGPU:

$ xrandr --listproviders
Provider 0: id: 0x68 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 3 associated providers: 0 name:Intel
Provider 1: id: 0x41 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 0 associated providers: 0 name:AMD Radeon (TM) HD8530M @ pci:0000:04:00.0

Observe que o Provedor 1 outputs: 0: não é capaz de gerar saída, quaisquer que sejam as outras propriedadesSaída de origemeSaída do coletorpoderia dizer. Se o seu sistemafazexibir um valor diferente de 0 para a outputs:propriedade do dGPU, então você poderá ter outras opções disponíveis (exibição direta, possivelmente também em conjunto com Reverse PRIME usando --setprovideroutputsource) que não serão abordadas por esta resposta.

Para preparar o uso para tarefas de GPU (3D) descarregadas para o dGPU, com o exemplo anterior isso pode ser feito:

$ xrandr --setprovideroffloadsink 'AMD Radeon (TM) HD8530M @ pci:0000:04:00.0' Intel

Em vez de nomes, podem ser usados ​​os ids, ou ainda mais simplesmente o índice. Os dois comandos abaixo fariam o mesmo. É preciso tomar cuidado para não inverter as direções ou coisas ruins podem acontecer.

$ xrandr --setprovideroffloadsink 0x41 0x68
$ xrandr --setprovideroffloadsink 1 0

E agora:

$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x68 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 3 associated providers: 1 name:Intel
Provider 1: id: 0x41 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 0 associated providers: 1 name:AMD Radeon (TM) HD8530M @ pci:0000:04:00.0

os dois provedores agora estão associados e exportar a variável especial (para mesa) DRI_PRIME=1seleciona o dGPU para renderizar:

$ DRI_PRIME=0 glxinfo | grep "OpenGL renderer string"
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile 
$ DRI_PRIME=1 glxinfo | grep "OpenGL renderer string"
OpenGL renderer string: AMD Radeon (TM) HD8530M (OLAND, DRM 3.36.0, 5.6.3-amd64, LLVM 6.0.0)

Portanto, para executar um programa 3D com uso intensivo de GPU chamado myhungrygame, você provavelmente faria (se o dGPU vier depois do iGPU):

$ xrandr --setprovideroffloadsink 1 0 # X11-wide setting
$ export DRI_PRIME=1
$ ./myhungrygame

Se você conseguir fazer as duas primeiras coisas antes de o ambiente de desktop ser carregado, todos usarão o dGPU para descarregamento 3D por padrão, o que provavelmente não é uma boa ideia para um laptop.

informação relacionada