Comment faire pour que l'invité VirtualBox utilise les graphiques NVidia?
Configuration de l'hôte:
Windows 7 x64
NVidia Optimus
Dans le panneau de configuration NVIDIA , j'ai explicitement sélectionné un processeur NVIDIA hautes performances pour:
C:\Program Files\oracle\VirtualBox\VirtualBox.exe C:\Program Files\Oracle\VirtualBox\VBoxSVC.exe
Lorsque VirtualBox est en cours d'exécution, le logiciel NVidia ne le répertorie pas en tant qu'application utilisant le GPU NVidia. Par conséquent, je suppose que VirtualBox n'utilise en effet pas le GPU Nvidia.
Client:
Windows 7 x64 (c'est-à-dire identique à l'hôte)
Ajouts d'invités installés
Accélération 3D activée dans les paramètres VirtualBox: Affichage / Vidéo / Activer l'accélération 3D
Ce que Rhinoceros , une application compatible OpenGL rapporte comme adaptateur vidéo:
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
Pour moi, il semble que la machine virtuelle utilise l'accélération matérielle 3D de l'hôte, mais malheureusement celle d'Intel.
Réponses:
Je me rends compte que quelques années se sont écoulées, mais je voulais répondre, car ce message apparaît assez haut lorsque vous recherchez "virtualbox 3d multiple GPU" sur Google. Dans le temps qui s'est écoulé, les choses sont devenues beaucoup plus simples et meilleures.
Les gens qui tombent sur ce fil vont probablement atterrir ici parce qu'ils ont un ordinateur portable ou un PC doté de deux GPU, ce qui est assez courant de nos jours - en particulier sur les ordinateurs portables de jeu. Le processeur graphique 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 processeur graphique Nvidia plus performant.
Aujourd'hui, je construisais une machine virtuelle Ubuntu sur mon ordinateur portable pour faire du développement multiplateforme, et tout allait bien sauf que la machine virtuelle invitée était extrêmement lente, et il n'y avait aucune explication à cela car le processeur, la mémoire et le disque montraient tous une faible utilisation.
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 / réduction des fenêtres - 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.
Il était facile de le déterminer car Windows 10 a désormais la possibilité de voir l'utilisation du GPU à l'aide du "gestionnaire de tâches", puis de l'onglet "performances". Et je pouvais voir que je déplaçais les fenêtres, maximisées, minimisées, ce qui se faisait via 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 GPU1.
Après avoir cherché, je n'ai pas vraiment trouvé où vous pouviez spécifier le GPU à utiliser. Mais ce fil, et quelques autres, m'a rappelé que sur ce type de configuration, vous devez aller dans le panneau de configuration 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. Vous devrez peut-être explorer le lecteur / chemin d'accès à votre installation de 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 défini sur le GPU que vous souhaitez qu'il utilise, qui dans mon cas était "Processeur NVIDIA haute performance" .
Ne le définissez pas sur auto et ne le définissez certainement pas sur intégré. Bien sûr, vous avez besoin des paramètres VM définis avec la case d'accélération 3D cochée, et vous avez besoin des ajouts invités 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, arrêtez la machine virtuelle invitée, quittez la boîte virtuelle, puis relancez la boîte virtuelle et la machine virtuelle.
Si vous utilisez le gestionnaire de tâches | performacne et regardez le processus "gestionnaire de boîte virtuelle" et regardez quel GPU est utilisé lorsque vous naviguez dans l'interface utilisateur de la machine virtuelle invitée, vous devriez le voir en utilisant le meilleur GPU maintenant. Voir l'image collée ci-dessous.
Cela dit, ne vous attendez pas à pouvoir exécuter des jeux sur une machine virtuelle invitée. Le passage d'accélération 3D à travers n'est toujours pas aussi loin. Mais vous pouvez vous attendre à avoir un système d'exploitation et une interface utilisateur modernes chez vos invités, et avoir une expérience acceptable. On pourrait jouer à des jeux plus anciens dans la machine virtuelle invitée, comme tout ce qui est basé sur directX9. Malheureusement, comme la possibilité de virtualiser les GPU évolue, la technologie de jeu 3D évolue plus rapidement.
la source
Donner à l'invité un accès GPU complet n'est probablement pas possible. Si une machine virtuelle avait un accès direct à votre GPU pendant que votre hôte l'utilisait, Bad Things TM se produirait car le partage de mémoire entre deux ordinateurs effectivement différents n'est pas une chose; pointeurs et adresses et ainsi de suite serait très différent entre eux. (Aucune carte disponible pour le consommateur ne prend en charge deux ordinateurs à la fois.)
Il y a cependant certaines choses que vous pouvez essayer. Tout d'abord, définissez votre processeur graphique préféré sur le bon dans le panneau de configuration NVidia ( Paramètres 3D → Gérer les paramètres 3D → Processeur graphique préféré ). Cela pourrait rendre VirtualBox compatible avec la carte NVidia pour OpenGL.
Si cela ne vous aide pas, essayez d' installer les compléments d'invité en mode sans échec sur l'invité.
Enfin, sur les hôtes Linux , vous pouvez essayer de passer le GPU à la machine virtuelle, mais cela ne fonctionnera que pour les cartes PCI et je n'ai pas pu déterminer si la vôtre est PCI, et même ainsi, vous avez de bonnes chances de déchirer le GPU de l'hôte ou causer d'autres problèmes. Trouvez d'abord l'adresse PCI (bus, périphérique et fonction) pour la bonne carte. Réglez le chipset de votre VM sur ICH9; cela n'a rien cassé immédiatement quand je l'ai essayé. Utilisez ensuite l'utilitaire VBoxManage pour attacher la carte:
Remplacez
Your VM Name
le cas échéant.BB
est le numéro de bus de votre GPU sur l'hôte;DD
est l'appareil;F
est la fonction. Après le@
, entrez l'emplacement PCI qu'il sera sur l'invité. Par exemple:En général, le passthrough GPU est plus susceptible d'être possible sur un hôte Linux. Voir Comment configurer une machine de jeu avec le passthrough GPU .
la source