web-dev-qa-db-fra.com

Android Studio, soudainement eu un problème de pilote GPU lors de l'exécution de l'émulateur

J'ai un ordinateur portable que j'utilise principalement pour le développement Android sur un studio Android, aujourd'hui tout d'un coup, j'ai reçu ce message d'erreur (ou une version obsolète de celui-ci) lorsque j'ai exécuté mon émulateur

Your GPU driver information:

GPU #1
Make: 8086
Model: Intel(R) HD Graphics Family
Device ID: 0a16
Driver version: 10.18.10.3945
GPU #2
Make: 10de
Model: NVIDIA GeForce 820M
Device ID: 1140
Driver version: 22.21.13.8476 

Some users have experienced emulator stability issues with this driver version. As a result, were selecting a compatibility renderer. Please check with your manufacturer to see if there is an updated driver available. 

Mise à jour du pilote geforce, mais inutile, a tenté de mettre à jour le pilote intel mais a échoué. Existe-t-il un moyen de le désactiver? Contourner le moteur de rendu de compatibilité et travailler comme avant, l'émulateur est affreux maintenant. Une explication pourquoi cela s'est produit tout d'un coup?

De plus, j'utilise Windows 7 64 bits si cela peut vous aider, a eu une mise à jour il y a quelques jours.

47
newRuser

J'utilise Win10 mais j'ai le même problème. L'émulateur a commencé à planter mon application après la dernière mise à jour de l'émulateur. Dans mon cas, le problème est que l’émulateur ne fonctionne pas sur du matériel, même si je n’ai jamais eu de problème avec mes GPU. En outre, la fenêtre "Problème de pilote de GPU" qui apparaît n'appelle même pas QUEL est l'un des GPU qu'il pense être le problème. 

Pour moi, la solution qui a fonctionné consiste à exécuter un émulateur à partir d'un terminal, en le forçant à utiliser des graphiques matériels (au lieu de laisser l'émulateur décider lequel) en utilisant la commande

emulator -avd avd_name -gpu mode

où mode est Hôte afin qu'il fonctionne avec du matériel.

Par exemple:

À l'aide du terminal Android Studio, accédez au dossier contenant l'émulateur. La valeur par défaut sur Win10 est: C:\Users \userName\ AppData\Local\Android\sdk\emulator

Recherchez un émulateur à exécuter en répertoriant ceux disponibles: emulator -list-avds

Lancer l'émulateur avec -Gpu Host option: emulator -avd avd_name -gpu Host

Plus d'infos sur ce lien

41
Api

Un commentaire dans le rapport de bug concernant ce problème par un employé de Google est éclairant.

Si votre système ne possède pas de processeur graphique distinct, nous avons prévu cette modification dans afin de rendre l'émulateur plus fiable sur les pilotes Intel GPU. À À vos risques et périls, vous pouvez revenir à l’utilisation du processeur graphique Intel en accédant à page de paramètres, puis modifiez le rendu de OpenGL ES en "ANGLE (D3D11)", "ANGLE (D3D9)" ou "OpenGL natif du bureau".

Il semble que ce message soit affiché pour tous les systèmes utilisant des processeurs graphiques Intel, pas seulement pour les systèmes exécutant des versions spécifiques d'un pilote graphique.

La solution consiste, si possible, à utiliser un processeur graphique externe pour exécuter l'émulateur.

Si un GPU Intel est le seul GPU disponible sur le système, il est possible de réactiver le rendu accéléré d'OpenGL ES, en remplaçant le rendu OpenGL ES par défaut dans les paramètres (voir ci-dessous). Les options sont OpenGL, ANGLE et SwiftShader. SwiftShader étant une émulation OpenGL ES basée sur le processeur, ce paramètre ne permettra pas d'accélérer. ANGLE est une émulation OpenGL basée sur Direct3d.

Selon le commentaire, il n'est pas garanti que cela fonctionne. En effet, je suis en mesure de réactiver l'accélération matérielle pour les émulateurs Android 7, mais avec l'accélération matérielle activée, tout ce que je reçois est un écran noir pour les émulateurs Android 8. 

Ouvrez les paramètres avec Ctrl-Shift-S puis, en fonction de la version de l'émulateur, allez à Settings -> General -> OpenGL ES renderer ou à Settings -> Advanced -> OpenGL ES renderer

Versions d'émulateur plus récentes:  Settings illustration

Anciennes versions d'émulateur:  Settings illustration

Mise à jour n ° 1: Un autre commentaire sur le rapport de bogue fournit un éclairage supplémentaire sur ce problème:

Si vous avez juste un Intel HD 4xxx exécutant l'émulateur, il est prévu d'utiliser un rendu de compatibilité. Je suis désolé, mais nous devons pouvoir basculer vers des pilotes de processeur graphique Intel mieux pris en charge, en particulier lorsque vous exécutez des niveaux d’API élevés (25+) d’images système. Les iGPU Intel de cette génération (et des versions antérieures) ont de nombreux problèmes avec la compatibilité OpenGL.

Il semble que les pilotes Intel iGPU pour les processeurs Haswell (4e génération) et les versions antérieures ne supportent pas assez OpenGL pour les appareils Android 7.1+. Ils ont donc délibérément recours à une émulation logicielle qui prend mieux en charge les nouveaux émulateurs Android. 

Cela correspond à mon expérience. L'utilisation d'Intel iGPU fonctionne très bien sur Android 7, mais est instable sur Android 7.1 et ne fonctionne pas du tout sur Android 8.

Ma suggestion, s’en tenir aux émulateurs Android 7 lorsqu’on utilise l’accélération matérielle pour Intel Haswell et les iGPU plus anciens.

Mise à jour n ° 2: Une communication officielle sur cette question a finalement été fournie sous la forme de commentaires dans le notes de publication pour Emulator 26.1.3:

Les GPU qui seront utilisés pour utiliser le rendu ANGLE ou Swiftshader sont déterminés comme suit:

  • Les anciens Intel iGPU ont des problèmes de pilote sur les pilotes OpenGL et ANGLE D3D. Les utilisateurs d’Intel HD Graphics 3xxx et plus âgés utiliseront Swiftshader.
  • Certains utilisateurs ont signalé leur incapacité à utiliser des images de niveau 25 de l'API en raison d'un bogue dans lequel "Pixel Launcher n'arrête pas de s'arrêter". Cela semble être un problème de pilote dans certains modèles Intel HD 4xxx. Ils seront donc configurés pour utiliser ANGLE automatiquement.

Pour obtenir de meilleurs résultats avec une émulation de GPU, nous vous recommandons d’utiliser un GPU NVIDIA ou AMD discret ou un GPU Intel plus récent (Iris, HD 5xxx, HD 5xx/6xx).

24
Benjamin

J'ai rencontré ce problème aujourd'hui. Sur la suggestion du traqueur de problèmes d'émulateur de Google, j'ai installé l'émulateur bêta 26.1.3. Problème résolu.

5
Lee

J'ai fait la même chose que @Api, mais à partir du gestionnaire de périphériques virtuels. Dans la fenêtre d'édition du périphérique, dans la liste déroulante Graphiques, j'ai sélectionné "Matériel - GLES 2.0". Je crois que le défaut est automatique. J'obtiens toujours la fenêtre contextuelle du pilote GPU erronée, mais l'émulateur ne plante plus. C'est le retour à la fiabilité normale.

2
CVD

Comme suggéré, accédez à Paramètres -> Apparence et comportement -> Paramètres système -> Mises à jour. Remplacez "Vérifier automatiquement les mises à jour" par "Canal bêta". Mettez l'émulateur à jour vers la dernière version bêta. Problème de conducteur devrait être parti. J'ai eu des problèmes pour exécuter fragment avec Google Maps (application chrash) qui a été résolu après la mise à jour de l'émulateur vers la dernière version bêta.

2
AlfaSpider

Pour les utilisateurs de Linux, allez dans le dossier Android qui, dans mon cas, est sous ~/Android. Passez ensuite à/sdk/emulator. "emulator" est une commande locale. Ainsi, vous pouvez exécuter la commande en tant que "./emulator" local.

Le reste est fait comme l'utilisateur "Api" l'a indiqué.

$ ./emulator -avd -avd_name -gpu mode

$ ./emulator -avd Nexus_5X_API_26 -hôte gpu (#IN MY CASE)

Remarque: je n'ai pas téléchargé le SDK, je l'ai plutôt copié et collé sous/répertoire d'accueil. C'est pourquoi la commande n'était pas valide à l'échelle mondiale. Si vous installez sdk avd depuis le début, cela devrait fonctionner correctement.

1
Thet Htun

J'ai réussi à contourner ce problème en désactivant l'utilisation du GPU afin que l'AVD utilise l'accélération logicielle .. Il ne sera pas aussi rapide que le GPU, mais au moins, il a de meilleures chances de fonctionner correctement.

J'ai essayé d'autres options ci-dessus mais malheureusement aucune d'entre elles ne fonctionnait.

Si vous souhaitez essayer cette option, accédez au gestionnaire AVD (dans Android Studio: Outils -> Android -> Gestionnaire AVD), puis modifiez votre périphérique virtuel et dans le champ Graphiques, vous pouvez définir "Logiciel - GLES 1.1" à la place si "Matériel - GLES 2.0".

Ce n'est pas la solution parfaite à ce problème, mais cela peut aider.

0
R. Du

rien de tout cela a fonctionné pour moi sur mon ordinateur portable Windows avec Intel HD4000

ce qui a fonctionné est ubuntu linux après avoir exécuté l’émulateur sur linux, j’ai été choqué par sa vitesse :)

il semble donc que le problème avec Intel et Windows ne sera pas résolu bientôt

0
Ahmed D. Sherif

J'ai exactement le même problème il y a exactement 4 jours. J'ai essayé les deux réponses ci-dessus, mais rien ne fonctionne. PS. L'émulateur fonctionne, mais se bloque apparemment au hasard. Avant cette erreur, l'émulateur fonctionnait bien et je pouvais tester certaines fonctionnalités. Je peux aussi déboguer complètement sans aucun crash via USB avec quelques appareils Android, alors je suis presque certain que c'est un problème avec l'émulateur.

Edit: Vous ne savez pas exactement quel était le problème, mais ce problème a été résolu en forçant Android Studio à s'exécuter avec le GPU nVidia.

0
Rayzor536