Je me rends compte que quelques années se sont écoulées mais je tenais à répondre puisque ce post apparaît assez haut lorsque l'on cherche sur Google "virtualbox 3d multiple GPU". Dans le temps qui s'est écoulé, les choses se sont beaucoup simplifiées et améliorées.
Les personnes qui tombent sur ce fil de discussion le font probablement parce qu'elles possèdent un ordinateur portable ou un PC équipé de deux GPU, ce qui est assez courant de nos jours - en particulier sur les ordinateurs portables de jeu. Le GPU Intel intégré est utilisé pour le rendu de Windows et des applications générales, mais les applications qui utilisent la fonctionnalité 3D du GPU doivent le faire via le GPU Nvidia, plus performant.
Aujourd'hui, je construisais une VM Ubuntu sur mon ordinateur 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 montraient tous une faible utilisation.
Il n'a pas fallu longtemps pour comprendre que c'était la performance vidéo qui était à l'origine du problème. Lancer des applications, maximiser/minimiser Windows - tout ce que nous tenons pour acquis en 2019 mais qui nécessite une accélération 3D pour fonctionner à une vitesse raisonnable - utilisait le GPU 0.
Cela a été facile à déterminer car Windows 10 permet désormais de voir l'utilisation du GPU en utilisant le "gestionnaire des tâches", puis l'onglet "performance". Et j'ai pu voir que lorsque je déplaçais Windows, maximisait, minimisait, 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 la NVidia GTX-1050ti, qui était le GPU1.
Après avoir cherché, je n'ai trouvé aucun endroit où l'on pouvait spécifier le GPU à utiliser. Mais ce fil, et d'autres, m'ont rappelé que sur ce type de configuration, il faut aller dans le panneau de configuration de NVidia, puis "gérer les paramètres 3D", puis l'onglet "Paramètres du programme".
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 rechercher le lecteur/chemin d'accès où se trouve votre installation Virtualbox. Une fois que vous l'avez ajouté, dans les paramètres ci-dessous, assurez-vous que l'élément 2. "Sélectionnez le processeur graphique préféré pour ce programme" est réglé sur le GPU que vous voulez utiliser, qui dans mon cas était "Processeur NVIDIA haute performance".
Ne le mettez pas en mode automatique et encore moins en mode intégré. Bien sûr, il faut que les paramètres de la VM soient réglés avec la case accélération 3D cochée, et que les ajouts de l'invité soient installés sur l'hôte. Mais une fois que vous avez défini les paramètres vidéo 3d de l'hôte comme décrit ci-dessus, arrêtez la VM invitée, quittez virtualbox, puis relancez virtualbox et la VM.
Si vous utilisez le gestionnaire de tâches|performacne et regardez le processus "virtualbox manager" et regardez quel GPU est utilisé lorsque vous naviguez dans l'interface utilisateur de la VM invitée, vous devriez voir qu'il utilise le meilleur GPU maintenant. Voir l'image collée ci-dessous.
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 tout à fait au point. Mais vous pouvez espérer avoir un système d'exploitation et une interface utilisateur modernes dans votre machine invitée, et avoir une expérience acceptable. Il serait possible de jouer à des jeux plus anciens dans la VM invitée, comme tout ce qui est basé sur DirectX9. Malheureusement, à mesure que la capacité de virtualiser le GPU évolue, la technologie des jeux 3D évolue plus rapidement.