Le mode graphique accéléré de Cuttlefish utilise l'unité de traitement graphique (GPU) physique de votre machine hôte pour le rendu en transmettant des commandes de rendu invité à votre machine hôte, en exécutant les appels de commandes de rendu sur votre machine hôte et en transmettant les résultats du rendu à l'invité.
Un appareil Cuttlefish exécuté sous Android 11 ou version ultérieure détecte et utilise des graphismes accélérés. Si la machine hôte n'est pas compatible avec les graphismes accélérés ou si la version d'Android est Android 10 ou antérieure, le rendu côté invité (par exemple, l'interface utilisateur et la lecture vidéo) de votre appareil Cuttlefish est géré par SwiftShader. SwiftShader est une implémentation logicielle des API OpenGL et Vulkan. Étant donné que SwiftShader est une implémentation logicielle, il fournit une solution de rendu universellement accessible pour Cuttlefish, capable de s'exécuter sur n'importe quelle machine hôte.
Toutefois, l'utilisation de SwiftShader n'est pas aussi performante que sur un appareil normal. L'affichage est un problème parallèle qui peut être massivement parallélisé, car les valeurs de pixels peuvent être calculées indépendamment. Les processeurs graphiques (GPU) sont des unités matérielles qui répondent à ce problème en accélérant le rendu.
Conditions requises
Le mode graphique accéléré nécessite que l'hôte dispose des éléments suivants:
- Pilote compatible avec EGL compatible avec l'extension
GL_KHR_surfaceless_context
- Pilote compatible avec OpenGL ES
- Pilote compatible avec Vulkan
Utiliser les modes graphiques accélérés
GfxStream
Pour utiliser le mode graphique accéléré GfxStream, lancez votre appareil Cuttlefish local avec l'indicateur --gpu_mode=gfxstream
. Avec ce mode, les appels d'API OpenGL et Vulkan sont transférés directement à l'hôte.
launch_cvd --gpu_mode=gfxstream
Virgl
Pour utiliser le mode graphique accéléré par Virgl, lancez votre appareil Cuttlefish local avec l'indicateur --gpu_mode=drm_virgl
.
launch_cvd --gpu_mode=drm_virgl
Lorsque vous utilisez le mode graphique accéléré par Virgl, les appels d'API OpenGL sont traduits en une représentation intermédiaire (voir Gallium3D). La représentation intermédiaire est communiquée à l'hôte, et la bibliothèque virglrenderer sur l'hôte traduit la représentation intermédiaire en appels d'API OpenGL.