Como faço para que o convidado do VirtualBox use os gráficos da NVidia?
Configuração do anfitrião:
Janelas 7x64
Nvidia Optimus
EmPainel de controle NVIDIA, selecionei explicitamenteProcessador NVIDIA de alto desempenho para:
C:\Program Files\oracle\VirtualBox\VirtualBox.exe C:\Program Files\Oracle\VirtualBox\VBoxSVC.exe
Quando o VirtualBox está em execução, o software NVidia não o lista como aplicativo que usa a GPU NVidia. Portanto, presumo que o VirtualBox realmente não use a GPU Nvidia.
Convidado:
Windows 7 x64 (ou seja, igual ao host)
Adições de convidadosinstalado
Aceleração 3D habilitada nas configurações do VirtualBox: Exibir / Vídeo / Ativar aceleração 3D
O queRinoceronte, um aplicativo compatível com OpenGL reporta como adaptador de vídeo:
Humper Chromium OpenGL version: 2.1 Chromium 1.9 Render version: 2.0 Shading Language: 1.40 - Intel Build 9.17.10.3517 Driver Date: NA Driver Version: NA Maximum Texture size: 8192 x 8192 Z-Buffer depth: 32bits Maximum Viewport size: 8192 x 8192 Total Video Memory: 64 MB
Para mim, parece que a máquina virtual usa aceleração de hardware 3D do host, mas infelizmente a Intel.
Responder1
Sei que alguns anos se passaram, mas queria responder, já que esta postagem aparece bem alta quando você pesquisa no Google por "virtualbox 3d multiple GPU". Com o tempo que passou, as coisas ficaram muito mais simples e melhores.
As pessoas que se depararem com esse tópico provavelmente chegarão aqui porque têm um laptop ou PC com duas GPUs, o que é bastante comum hoje em dia – especialmente em laptops para jogos. A GPU Intel integrada é usada para renderizar janelas e aplicativos gerais, mas os aplicativos que fazem uso da funcionalidade 3D da GPU devem fazer isso por meio da GPU Nvidia de alto desempenho.
Hoje, eu estava construindo uma VM Ubuntu em meu laptop para fazer algum desenvolvimento multiplataforma, e tudo estava bem, exceto que a VM convidada era extremamente lenta e não havia explicação para isso porque CPU, memória e disco estavam todos mostrando baixa utilização.
Não demorou muito para descobrir que era o desempenho do vídeo que estava causando o problema. Iniciar aplicativos, maximizar/minimizar janelas – qualquer coisa que consideramos natural em 2019, mas que precisa de aceleração 3D para funcionar em qualquer velocidade razoável – estava usando GPU 0.
Foi fácil determinar isso porque o Windows 10 agora tem a capacidade de ver a utilização da GPU usando o “gerenciador de tarefas” e depois a guia “desempenho”. E pude ver enquanto movia janelas, maximizava, minimizava, isso estava sendo feito através da GPU no host. Essa GPU no host é a GPU Intel HD integrada, e eu queria usar a NVidia GTX-1050ti, que era a GPU1.
Depois de pesquisar, não encontrei nenhum lugar onde você pudesse especificar qual GPU usar. Mas este tópico, e alguns outros, me lembraram que nesse tipo de configuração você tem que ir ao painel de controle da NVidia, depois em "gerenciar configurações 3D" e depois na guia "Configurações do programa".
Você provavelmente não encontrará “Virtualbox” na lista. Mas você pode pressionar o botão "Adicionar" e adicionar virtualbox.exe. Pode ser necessário detalhar a unidade/caminho onde está a instalação da sua caixa virtual. Depois de adicioná-lo, nas configurações abaixo certifique-se de que o item 2. "Selecione o processador gráfico preferido para este programa" esteja definido para a GPU que você deseja usar, que no meu caso foi "Processador NVIDIA de alto desempenho" .
Não configure-o como automático e certamente não configure-o como integrado. Claro, você precisa das configurações da VM definidas com a caixa de aceleração 3D marcada e das adições de convidados instaladas no host. Mas depois de definir as configurações de vídeo 3D do host conforme descrito acima, desligue a VM convidada, saia da caixa virtual e reinicie a caixa virtual e a VM.
Se você usar o gerenciador de tarefas|performacne e observar o processo "gerenciador de caixa virtual" e observar qual GPU é usada quando você navega na interface do usuário da VM convidada, você deverá vê-lo usando a GPU melhor agora. Veja a imagem colada abaixo.
Dito isso, não espere poder rodar jogos em uma VM convidada. A passagem da aceleração 3D ainda não está tão avançada. Mas você pode esperar ter um sistema operacional e uma interface de usuário modernos em seu convidado e uma experiência aceitável. Seria possível jogar jogos mais antigos na VM convidada, como qualquer coisa baseada em DirectX9. Infelizmente, à medida que a capacidade de virtualizar a GPU evolui, a tecnologia de jogos 3D evolui mais rapidamente.
Responder2
Provavelmente não é possível conceder ao convidado acesso total à GPU. Se uma máquina virtual tivesse acesso direto à sua GPU enquanto seu host a estivesse usando, Bad Things TM aconteceria porque compartilhar memória entre dois computadores efetivamente diferentes não é uma coisa; ponteiros e endereços e outros enfeites seriam muito diferentes entre eles. (Nenhuma placa disponível para o consumidor suporta a manutenção de dois computadores ao mesmo tempo.)
Existem, no entanto, algumas coisas que você pode tentar. Primeiro, defina o seu processador gráfico preferido para o bom no Painel de Controle da NVidia (Configurações 3D→Gerenciar configurações 3D→Processador gráfico preferido). Isso pode fazer com que o VirtualBox vá com a placa NVidia para OpenGL.
Se isso não ajudar, tenteinstalando adições para convidados no modo de segurançano convidado.
Finalmente,em hosts Linux, você pode tentar passar a GPU para a máquina virtual, mas isso só funcionará para placas PCI e não consegui descobrir se a sua é PCI e, mesmo assim, você tem uma boa chance de arrancar a GPU de o host ou causando outros problemas. Primeiro encontre o endereço PCI (barramento, dispositivo e função) da placa em boas condições. Configure o chipset da sua VM para ICH9; isso não quebrou nada imediatamente quando tentei. Em seguida, use o utilitário VBoxManage para anexar o cartão:
vboxmanage modifyvm "Your VM Name" --pciattach BB:DD.F@bb:dd.f
Substitua Your VM Name
conforme apropriado. BB
é o número do barramento da sua GPU no host; DD
é o dispositivo; F
é a função. Após o @
, insira o slot PCI que estará no convidado. Por exemplo:
vboxmanage modifyvm "Windows 7 x64" --pciattach 01:[email protected]
Em geral, é mais provável que a passagem de GPU seja possível em um host Linux. VerComo configurar uma máquina de jogos com passagem de GPU.