Débogueurs
Déboguer avec la couche de validation
Vulkan est conçu pour des performances élevées et une faible surcharge des pilotes. Pour ce faire, elle n'inclut que des fonctionnalités de vérification et de débogage très limitées par défaut. En cas d'erreur, le pilote plante souvent au lieu de renvoyer un code d'erreur. Pire encore, il semble fonctionner sur votre carte graphique, mais échoue complètement aux autres.
Pour permettre des vérifications approfondies pendant votre développement, Vulkan fournit des couches de validation, c'est-à-dire des morceaux de code pouvant être insérés entre l'API et le pilote graphique pour effectuer des opérations telles que l'exécution de vérifications supplémentaires sur les paramètres de fonction et le suivi des problèmes de gestion de la mémoire. Vous pouvez activer les couches de validation pendant le développement et les désactiver complètement lorsque vous publiez votre application, sans que cela ne nécessite de surcharge.
Les couches de validation peuvent être écrites par n'importe qui, mais Khronos fournit un seul ensemble standard appelé VK_LAYER_KHRONOS_validation
. Consultez Couches de validation Vulkan sur Android sur la page du NDK Android pour activer la couche de validation dans votre application.
RenderDoc
RenderDoc est un autre outil Open Source performant qui vous permet de capturer un frame pour l'inspecter et l'analyser. Il s'agit d'un outil très puissant utilisé par les programmeurs graphiques pour déboguer les scènes rendues. Il est bien compatible avec Vulkan sur Android, bien que votre application doive être définie comme débogable pour qu'elle fonctionne.
Pour savoir comment le configurer et l'utiliser dans votre application Android, consultez How do I use RenderDoc on Android (Comment utiliser RenderDoc sur Android).
Bibliothèques de capture / replay
GFXReconstruction
GFXReconstruct est un projet Open Source qui fournit des outils permettant de capturer et de relire des appels d'API graphiques exécutés par une application. La trace enregistrée peut être relue ultérieurement pour reconstituer le comportement spécifique aux graphiques de l'application capturée. L'un des principaux avantages de GFXReconstruct est que vous pouvez l'utiliser dans votre application publiée (lorsque vous avez désactivé android:debuggable).
Pour en savoir plus, consultez le dépôt du projet. Les informations concernant la configuration et l'utilisation de Vulkan sur Android sont disponibles dans la section Capture et relecture de l'API GFXReconstruct pour Android.
Notez que les fichiers de suivi ne sont pas portables, ce qui signifie que vous ne pouvez pas capturer le fichier sur un appareil et le relire sur un autre appareil (avec une version d'OS, des jeux de puces ou même une version de pilote différentes).
Profileurs
Android GPU Inspector (AGI)
Android GPU Inspector (AGI) est un profileur graphique conçu pour Android qui inclut un profil système et un Profileur de frame. Il fournit des informations de profilage de haut niveau qui vous permettent de comprendre le profil de performances de votre jeu et d'identifier les goulots d'étranglement.
Pour télécharger AGI et apprendre à l'utiliser, consultez le site Web d'Android GPU Inspector.
Profileur Android Studio
Le profileur Android Studio est un outil utile pour profiler les performances de votre application. Cependant, il n'est pas spécifiquement axé sur le profilage graphique. Elle comprend les composants suivants : Profileur de processeur, profileur de mémoire, profileur réseau, profileur d'énergie, profileur d'alimentation et moniteur d'événement.
Pour en savoir plus sur la configuration et l'utilisation du profileur Android Studio, consultez la section Profiler les performances de votre application.
Profileurs OEM
Les outils de cette section sont spécifiques aux OEM et peuvent ne pas fonctionner sur les appareils s'exécutant sur d'autres puces.
ARM Performance Studio pour mobile
Arm Performance Studio pour mobile est le nouveau nom d'ARM Mobile Studio. Il s'agit d'une suite d'outils qui inclut l'analyseur graphique et Frame Advisor pour vous aider à identifier et à résoudre les problèmes de performances sur les GPU ARM.
Pour en savoir plus, consultez le site Web Arm Performance Studio pour mobile.
PerfDoc ARM pour les GPU au Mali
PerfDoc est une couche Vulkan développée pour valider les applications par rapport aux bonnes pratiques d'ARM pour les GPU Mali. Elle a depuis été fusionnée dans VK_LAYER_KHRONOS_validation et fait essentiellement partie des couches de validation Vulkan standards.
Pour en savoir plus sur son utilisation, consultez la section Débogage avec une couche de validation.
Profileur Qualcomm Snapdragon
Qualcomm Snapdragon Profiler est un logiciel de profilage développé par Qualcomm pour les développeurs d'applications. Il permet aux développeurs d'applications d'analyser les performances des processeurs, des GPU, des DSP, de la mémoire, de l'alimentation, de la température et du réseau afin d'identifier les goulots d'étranglement sur leurs chipsets.
Pour en savoir plus, consultez Snapdragon Profiler sur Qualcomm Developer Network.
Samsung GPUWatch
La GPUWatch de Samsung est un outil permettant d'observer l'activité des GPU sur les appareils Samsung. Contrairement aux autres outils, vous pouvez l'utiliser directement depuis votre appareil mobile. Il est donc très pratique de vérifier immédiatement les performances de votre application, même lorsque vous n'avez pas accès à un autre ordinateur hôte.
Pour savoir comment l'activer, consultez le guide de l'utilisateur.
PVRTune
PVRTune d'Imagination Technologies permet aux développeurs de profiler des applications sur du matériel PowerVR en temps réel à l'aide d'un large éventail de compteurs et de métriques. Il permet également d'enregistrer la session pour une analyse plus poussée de bas niveau et de détecter les goulots d'étranglement qui affectent les performances.
Pour en savoir plus sur l'utilisation de PVRTune, consultez le manuel.
Outils de migration
Convertir des nuanceurs GLSL au format SPIR-V
L'API Vulkan s'attend à ce que les programmes de nuanceurs soient fournis au format intermédiaire binaire SPIR-V. Cette convention est différente d'OpenGL ES, pour laquelle vous pouvez envoyer du code source écrit en GLSL (OpenGL Shading Language) sous forme de chaînes de texte.
NDK r12 et versions ultérieures incluent une bibliothèque d'exécution permettant de compiler des nuanceurs GLSL au format SPIR-V pouvant être utilisé par Vulkan. Le compilateur shaderc permet de compiler des programmes de nuanceurs écrits en GLSL au format SPIR-V. Si votre jeu utilise le HLSL, DirectXShaderCompiler est compatible avec une sortie SPIR-V.
En règle générale, vous devez compiler des programmes de nuanceurs hors connexion dans le cadre du processus de création d'éléments de votre jeu et inclure les modules SPIR-V dans vos éléments d'exécution.
Pour en savoir plus sur le processus de compilation de nuanceurs pour votre application Vulkan, consultez Compilateurs de nuanceurs Vulkan sur Android dans la section du NDK Android.
Fonctionnalités avancées
Intégrer Android Frame Pacing dans votre moteur de rendu Vulkan
La bibliothèque Android Frame Pacing (également appelée Swappy) aide les jeux Vulkan à obtenir un rendu fluide et un rythme correct pour synchroniser la boucle de rendu du jeu avec le sous-système d'affichage de l'OS et le matériel d'affichage sous-jacent.
Un rythme correct élimine les artefacts visuels connus sous le nom de "déchirure", optimise la consommation d'énergie via la synchronisation entre l'actualisation de l'écran et la présentation des frames, et élimine les à-coups en stabilisant la fréquence d'images. Pour en savoir plus sur l'importance du frame pacing, consultez la section Bibliothèque Frame Pacing d'AGDK.
Pour en savoir plus sur l'intégration du frame pacing dans votre jeu, consultez Intégrer Android Frame Pacing dans votre moteur de rendu Vulkan.
Gérer l'orientation de l'appareil avec la prérotation Vulkan
La gestion de la rotation de la surface en dehors de l'application peut ne pas être sans frais. Même sur certains appareils haut de gamme dotés d'un processeur graphique dédié (Display Processing Unit, DPU), une pénalité de performance mesurable s'appliquera probablement, et l'impact variera selon que votre application est liée au processeur ou au GPU.
Vulkan permet aux développeurs de spécifier aux appareils beaucoup plus d'informations sur l'état du rendu qu'OpenGL. Parmi ces informations, citons l'orientation de l'appareil et sa relation avec l'orientation de la surface de rendu. Cette fonctionnalité vous permet d'implémenter la prérotation pour tirer le meilleur parti de Vulkan sur Android.
Pour savoir comment gérer efficacement la rotation de l'appareil dans votre application Vulkan, consultez la section Gérer l'orientation de l'appareil avec la prérotation Vulkan et l'application de démonstration associée.
Optimiser les performances avec une précision réduite
Le format numérique des données graphiques et des calculs du nuanceur peut avoir un impact important sur les performances de votre jeu. La majorité des calculs et des données des graphiques 3D modernes utilisent des nombres à virgule flottante. Vulkan sur Android utilise des nombres à virgule flottante de 32 ou 16 bits. Un nombre à virgule flottante de 32 bits est communément appelé "précision simple" ou "précision complète". Bien que le type à virgule flottante 64 bits soit défini dans Vulkan, il n'est généralement pas compatible et son utilisation n'est pas recommandée.
Consultez Optimiser avec une précision réduite pour savoir comment optimiser votre application Vulkan afin d'obtenir les meilleures performances en termes de calcul arithmétiques.