Percebo que já passaram alguns anos mas queria responder desde que este post aparece bem alto quando se procura no Google a “virtualbox 3d multiple GPU”. No tempo que passou, as coisas tornaram-se muito mais simples e melhores.
As pessoas que tropeçarem neste tópico irão provavelmente aterrar aqui porque têm um portátil ou PC que tem dois GPU, o que é bastante comum hoje em dia - especialmente em portáteis de jogos. A GPU Intel onboard é utilizada para renderizar janelas e aplicações gerais, mas as aplicações que fazem uso da funcionalidade 3D da GPU deverão fazê-lo através da GPU Nvidia de maior desempenho.
Hoje, eu estava a construir uma VM Ubuntu no meu portátil para fazer algum desenvolvimento multiplataforma, e tudo estava bem, excepto a VM convidada, que era extremamente lenta, e não havia explicação para isso porque CPU, memória, disco estavam todos a mostrar baixa utilização.
Não demorou muito tempo a descobrir que era o desempenho de vídeo que estava a causar o problema. O lançamento de aplicações, maximizando/minimizando janelas - qualquer coisa que tomamos como garantido em 2019 mas que necessita de aceleração 3D para funcionar a qualquer velocidade razoável - estava a usar GPU 0.
Foi fácil determinar isto porque o Windows 10 tem agora a capacidade de ver a utilização da GPU usando o “gestor de tarefas”, depois o separador “performance”. E eu podia ver como movia janelas, maximizado, minimizado, que estava a ser feito através da GPU no anfitrião. Essa GPU no anfitrião é a GPU Intel HD integrada, e eu queria utilizar a NVidia GTX-1050ti, que era a GPU1.
Depois de pesquisar por aí não encontrei realmente em lado nenhum onde se pudesse especificar qual a GPU a utilizar. Mas este tópico, e alguns outros, lembrou-me que neste tipo de configurações tem de ir ao painel de controlo da NVidia, depois “gerir configurações 3d”, depois o separador “Program Settings”.
Provavelmente não encontrará a “Virtualbox” na lista. Mas pode pressionar o botão “Add”, e adicionar virtualbox.exe. Poderá ter de perfurar a unidade/caminho onde se encontra a instalação da sua virtualbox. Depois de a ter adicionado, nas definições abaixo, certifique-se de que o item 2. “Select the preferred graphics processor for this program” está definido para a GPU que pretende utilizar, que no meu caso era “HIgh-performance NVIDIA processor”.
Não o defina para automático, e certamente não o defina para integrado. Claro que precisa das definições VM definidas com a caixa de aceleração 3D assinalada, e precisa das adições de convidados instaladas no anfitrião. Mas assim que tiver definido as definições 3d do anfitrião de vídeo como descrito acima, desligue o VM convidado, saia da caixa virtual, e depois relance a caixa virtual e o VM.
Se utilizar o tasks manager|performacne e olhar para o processo “virtualbox manager” e ver qual a GPU que é utilizada quando navega na IU do VM convidado, deverá vê-la utilizando a melhor GPU agora. Veja a imagem colada abaixo.
Dito isto, não espere poder executar jogos num VM convidado. A aceleração 3D passa ainda não está assim tão longe. Mas pode esperar ter um SO e uma IU modernos no seu convidado, e ter uma experiência aceitável. Poder-se-ia jogar jogos mais antigos no VM convidado, como qualquer coisa baseada no directX9. Infelizmente, à medida que a capacidade de virtualizar os eveolves da GPU, a tecnologia de jogos 3d evolui mais rapidamente.