Premiers pas avec Vulkan

Ce document explique comment télécharger, compiler et exécuter l'application exemple Khronos© pour commencer à utiliser la bibliothèque de graphiques Vulkan.

Conditions préalables

Avant de commencer, assurez-vous que la version appropriée du matériel et de la plate-forme est prête. Vous devez utiliser un appareil ou un émulateur compatible avec Vulkan, exécutant Android 7.0 (Nougat) ou une API de niveau 24 ou supérieur.

Pour vérifier votre version d'Android, accédez au menu Paramètres, puis sélectionnez À propos du téléphone > Version d'Android. Une fois que vous avez confirmé que vous utilisez la configuration appropriée du matériel et de la plate-forme, vous pouvez télécharger les logiciels nécessaires.

Télécharger

Avant de commencer, vous devez télécharger plusieurs outils et logiciels. Notez que sur un hôte Windows, il est recommandé d'éviter une hiérarchie profonde des chemins d'accès aux fichiers pour les outils et le code source. Cette pratique permet de contourner les limites de chemin d'accès appliquées sur certaines versions du système d'exploitation Windows.

  1. Si vous n'avez pas encore Android Studio, téléchargez-le, y compris le SDK Android le plus récent.
  2. Installez le NDK et CMake depuis Android Studio, ou téléchargez-les et installez-les séparément.
  3. Générez et exécutez l'exemple JNI Hello pour vous assurer qu'Android Studio fonctionne correctement.
  4. Installez Python 3 et les autres composants répertoriés dans build.md pour votre plate-forme hôte.

Importer

Dans cette section, vous téléchargerez l'exemple de dépôt Khronos© Vulkan©, générerez un projet Gradle pour Android, puis l'ouvrirez avec l'IDE Android Studio.

  1. Définissez les variables d'environnement suivantes :
    export ANDROID_HOME=/path/to/sdk-directory
    export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/{your-ndk-version-dir}
    
  2. Ajoutez CMake à $PATH, qui sert à générer les scripts de compilation Android :
    export PATH=$PATH:$ANDROID_HOME/cmake/{your-cmake-version}/bin
    
  3. Ouvrez un terminal et téléchargez le code source dans le répertoire de développement :
    cd dev-directory
    git clone --recursive https://github.com/KhronosGroup/Vulkan-Samples.git
    
  4. Suivez ces instructions (depuis Build.md) pour générer l'exemple de projet Android :
    cd Vulkan-Samples
    ./scripts/generate.py android
    
  5. Ouvrez Android Studio. Choisissez File > Open (Fichier > Ouvrir), puis sélectionnez Vulkan-Samples/build/android_gradle/build.gradle. Une fois le projet chargé par Android Studio, une vue semblable à suivante devrait apparaître :
    Importer un exemple de projet dans Studio

    Figure 1. Exemple de projet dans Android Studio

Compiler

Tous les exemples de ce dépôt sont organisés dans un seul projet Android. Pour compiler le projet, effectuez l'une des opérations suivantes :

  • Pour compiler uniquement les sources, utilisez le menu Build (Compiler) > Make Project (Créer le projet) ou appuyez sur la touche de raccourci Ctrl-F9.
  • Pour générer l'exemple de fichier APK, sélectionnez le menu Build (Compiler) > Build Bundle(s)/APK(s) (Compiler les bundles ou fichiers APK) > Build APK(s) (Compiler les fichiers APK).

Le message indiquant que la compilation a réussi s'affiche dans la fenêtre Build d'Android Studio. Si des erreurs s'affichent, corrigez-les, puis procédez de nouveau à la compilation.

Compiler un exemple de projet avec Studio

Figure 2. Exemple de compilation réussie

Exécuter

Avant d'exécuter l'exemple de projet, assurez-vous qu'Android Studio reconnaît l'appareil Vulkan ou l'émulateur Android qui y est connecté. Une vue semblable à celle-ci devrait s'afficher :

Connexion de l'appareil de test à Studio

Figure 3. Connexion de l'appareil de test à Android Studio

Pour exécuter le projet, procédez comme suit :

  1. Accédez au menu Run > Run vulkan_sample (Exécuter > Exécuter vulkan_sample) ou cliquez sur le bouton d'exécution dans la barre d'outils, puis attendez que l'exemple soit installé et démarré sur l'appareil connecté.
  2. Sur votre appareil Android connecté, autorisez les demandes d'accès nécessaires.
    • Activez Allow access to manage all files (Autoriser l'accès pour gérer tous les fichiers), puis appuyez sur la flèche de retour pour revenir à l'exemple d'écran de départ principal.
    • Autorisez l'accès au disque :
      autoriser l'accès au disque

      Figure 4. Activation de l'accès au disque

  3. Vous devriez voir un écran de menu principal semblable à celui-ci :
    exemple de menu principal

    Figure 5. Exemple de menu principal

  4. Parcourez la liste d'exemples et sélectionnez-en quelques-uns à exécuter. Si vous débutez dans le développement de Vulkan, vous pouvez commencer par les exemples "API". Par exemple, appuyez sur "Hello Triangle" pour afficher un triangle semblable à celui-ci :
    Triangle

    Figure 6. Exemple "Hello Triange"

Votre système de développement est maintenant configuré pour exécuter des exemples sur votre appareil de test.

Les exemples Vulkan sont développés pour plusieurs systèmes d'exploitation, y compris pour les ordinateurs et les mobiles. Certains exemples sous Performance (Performances), Extensions et Tooling (Outils) peuvent être instables et planter sur votre appareil. Plusieurs raisons peuvent expliquer ce comportement :

  • Les fonctionnalités Vulkan n'ont pas été conçues pour Android.
  • Votre version d'OS Android n'est pas compatible.
  • La capacité GPU de votre plate-forme matérielle n'est pas adaptée.

Explorer

La section Java de l'exemple Vulkan provient de la classe NativeActivity. Elle transmet des événements de cycle de vie d'application types, tels que la création, le démarrage, l'arrêt et la destruction d'une application, au code C/C++. Dans la section C/C++ de l'exemple, un framework met en œuvre la fonctionnalité de changement d'exemple secondaire au moment de l'exécution. Dans les grandes lignes, les événements système et les messages Android suivent le chemin suivant pour atteindre le code Vulkan de l'application exemple :

  • Section NativeSampleActivity Java
  • Section NativeSampleActivity C/C++
  • Code android_native_glue
  • android_main
  • Exemple de framework
  • Code de l'exemple secondaire individuel

android_main est la passerelle entre NativeSampleActivity et le code de l'application, ce qui peut vous servir de point de départ pour suivre l'exemple de code. Si vous souhaitez simplement vous concentrer sur les sources spécifiques à Vulkan, vous pouvez explorer le code sous Vulkan_Samples\samples, qui contient les éléments suivants :

  • Exemples de catégories "api"
  • Exemples de catégories "performance"
  • Exemples de catégories "extensions"
  • Exemples d'outils

Vulkan_Samples\shaders héberge tous les nuanceurs.

Vous pouvez commencer à parcourir les exemples de catégories "API" pour vous familiariser avec l'utilisation de base de Vulkan et l'exemple de framework. Vous pouvez ensuite accéder aux exemples de catégories "Performance" et "Extensions". Pour le code du nuanceur, vous pouvez utiliser la vue Project (Projet) dans Android Studio.

Nuanceur du triangle

Figure 7. Découverte du nuanceur avec Studio

Ressources supplémentaires

L'API Vulkan a déjà connu plusieurs versions. Elle est donc relativement mature. Le comité standard et la communauté de Vulkan ont créé un vaste ensemble de documents qui décrivent l'utilisation et les bonnes pratiques liées à l'API. La liste suivante contient quelques ressources destinée au développement d'applications Vulkan :

  • Spécification Vulkan. Le groupe Khronos gère la spécification Vulkan. Consultez la page d'accueil de Vulkan pour accéder à la spécification complète, à la formation, aux guides et aux tutoriels.

  • Couches de validation. Les couches de validation sont essentielles au développement d'applications. Pour en savoir plus, consultez la documentation sur les couches de validation Vulkan sur Android.

  • Shaderc Le code Shaderc dans le NDK est en aval du dépôt Shaderc. Pour consulter la documentation et les instructions d'utilisation de la dernière version, accédez à la page Compilateurs Shader.