Je réalise que quelques années ont passé mais je voulais répondre puisque ce post apparaît assez haut quand on cherche sur Google “virtualbox 3d multiple GPU”. Au fil du temps, les choses se sont beaucoup simplifiées et améliorées.
Les gens qui tombent sur ce sujet atterriront probablement ici parce qu'ils ont un ordinateur portable ou un PC qui a deux GPU, ce qui est assez courant de nos jours - surtout sur les portables de jeu. Le GPU Intel intégré est utilisé pour le rendu des fenêtres et des applications générales, mais les applications qui utilisent la fonctionnalité GPU 3D devraient le faire via le GPU Nvidia, plus performant.
Aujourd'hui, je construisais une VM Ubuntu sur mon portable pour faire du développement multiplateforme, et tout allait bien sauf que la VM invitée était extrêmement lente, et il n'y avait pas d'explication à cela parce que le CPU, la mémoire, le disque étaient tous faiblement utilisés.
Il n'a pas fallu longtemps pour comprendre que c'était la performance vidéo qui causait le problème. Le lancement d'applications, la maximisation/minimisation des fenêtres – tout ce que nous considérons comme acquis en 2019 mais qui a besoin d'une accélération 3D pour fonctionner à une vitesse raisonnable – utilisait le GPU 0.
Il a été facile de le déterminer car Windows 10 a maintenant la possibilité de voir l'utilisation du GPU en utilisant le “gestionnaire de tâches”, puis l'onglet “performances”. Et je pouvais voir en déplaçant les fenêtres, en maximisant, en minimisant, que cela se faisait par le biais du GPU sur l'hôte. Ce GPU sur l'hôte est le GPU Intel HD intégré, et je voulais utiliser le NVidia GTX-1050ti, qui était le GPU1.
Après avoir fait des recherches, je n'ai pas vraiment trouvé d'endroit où l'on puisse spécifier quel GPU utiliser. Mais ce fil de discussion, et quelques autres, m'ont rappelé que pour ce genre de configuration, il faut aller dans le panneau de configuration NVidia, puis “gérer les paramètres 3d”, puis l'onglet “Program Settings”.
Vous ne trouverez probablement pas “Virtualbox” dans la liste. Mais vous pouvez appuyer sur le bouton “Ajouter”, et ajouter virtualbox.exe. Il se peut que vous deviez forer le lecteur/chemin d'accès où se trouve votre installation de Virtualbox. Une fois que vous l'avez ajoutée, dans les paramètres ci-dessous, assurez-vous que le point 2. “Sélectionner le processeur graphique préféré pour ce programme” est réglé sur le GPU que vous voulez qu'il utilise, qui dans mon cas était “processeur NVIDIA à haute performance”.
Ne le réglez pas sur auto, et certainement pas sur intégré. Bien sûr, il faut que les paramètres de la VM soient réglés avec la case d'accélération 3D cochée, et il faut que les ajouts invités soient installés sur l'hôte. Mais une fois que vous avez défini les paramètres 3d de la vidéo hôte comme décrit ci-dessus, fermez la VM invitée, quittez la virtualbox, puis relancez la virtualbox et la VM.
Si vous utilisez le task manager|performacne et que vous regardez le processus du “virtualbox manager” et que vous regardez quel GPU est utilisé lorsque vous naviguez dans l'interface utilisateur de la VM invitée, vous devriez voir qu'elle utilise maintenant le meilleur GPU. Voir l'image collée ci-dessous.
Tout cela dit, ne vous attendez pas à pouvoir exécuter des jeux dans une VM invitée. L'accélération 3D n'est pas encore très avancée. Mais vous pouvez vous attendre à avoir un système d'exploitation et une interface utilisateur modernes dans votre VM invitée, et avoir une expérience acceptable. On pourrait jouer à des jeux plus anciens dans la VM invitée, comme tout ce qui est basé sur directX9. Malheureusement, à mesure que la capacité de virtualisation du GPU se développe, la technologie de jeu en 3D évolue plus rapidement.