Publication de la norme graphique Vulkan 1.2

Le consortium Khronos, qui développe des standards graphiques,
publié spécification Vulkan 1.2, qui définit une API pour accéder aux capacités graphiques et informatiques du GPU. La nouvelle spécification intègre les corrections accumulées sur deux ans et élargir le. Les pilotes prenant en charge la nouvelle version de Vulkan sont déjà libéré société Intel, AMD, ARM, Imagination Technologies et NVIDIA. Mesa offre le support de Vulkan 1.2 pour les pilotes RADV (cartes AMD) et ANV (Intel). Le support de Vulkan 1.2 est également implémenté dans le débogueur RenderDoc 1.6, SDK LunarG Vulkan et une série d'exemples Échantillons Vulkan.

principal les innovations:

  • Apporté à vous mise en œuvre d'un langage de programmation de shaders jusqu'à ce qu'il soit prêt à être utilisé à grande échelle HLSL, développé par Microsoft pour DirectX. La prise en charge de HLSL dans Vulkan permet d'utiliser les mêmes shaders HLSL dans les applications basées sur Vulkan et DirectX, et simplifie également la traduction de HLSL vers SPIR-V. Pour compiler les shaders, il est suggéré d'utiliser un compilateur standard
    DXC, qui a été ouvert par Microsoft en 2017 et est basé sur la technologie LLVM. La prise en charge de Vulkan est implémentée via un backend séparé, qui vous permet de traduire HLSL en une représentation intermédiaire des shaders SPIR-V. L'implémentation couvre non seulement toutes les capacités intégrées
    HLSL, incluant les types mathématiques, les flux de contrôle, les fonctions, les ensembles, les types de ressources, les espaces de noms, le Shader Model 6.2, les structures et les méthodes, mais permet également l'utilisation d'extensions spécifiques à Vulkan telles que VKRay de NVIDIA. En mode HLSL au-dessus de Vulkan, il était possible d'organiser le travail de jeux tels que Destiny 2, Red Dead Redemption II, Assassin's Creed Odyssey et Tomb Raider.

    Publication de la norme graphique Vulkan 1.2

  • Spécification mise à jour SPIR-V 1.5, qui définit une représentation intermédiaire des shaders universelle pour toutes les plates-formes et pouvant être utilisée à la fois pour les graphiques et le calcul parallèle.
    SPIR-V implique de séparer une phase distincte de compilation de shaders en une représentation intermédiaire, ce qui vous permet de créer des interfaces pour différents langages de haut niveau. Sur la base de diverses implémentations de haut niveau, un seul code intermédiaire est généré séparément, qui peut être utilisé par les pilotes OpenGL, Vulkan et OpenCL sans utiliser le compilateur de shader intégré.

    Publication de la norme graphique Vulkan 1.2

  • L'API principale de Vulkan comprend 23 extensions qui augmentent les performances, améliorent la qualité du rendu et simplifient le développement. Parmi les extensions ajoutées :
    • Sémaphores chronologiques (Sémaphore Timeline), unifiant la synchronisation avec les files d'attente de l'hôte et du périphérique (vous permettant d'utiliser une primitive pour la synchronisation omnidirectionnelle entre le périphérique et l'hôte, sans utiliser de primitives VkFence et VkSemaphore distinctes). Les nouveaux sémaphores sont représentés par une valeur de 64 bits augmentant de manière monotone qui peut être suivie et mise à jour sur plusieurs threads.
      Publication de la norme graphique Vulkan 1.2

    • Possibilité d'utiliser des types numériques avec une précision réduite dans les shaders ;
    • Option de configuration de mémoire compatible HLSL ;
    • Ressources non liées (sans liaison), qui supprime la limitation du nombre de ressources disponibles pour les shaders en utilisant l'espace virtuel partagé de la mémoire système et de la mémoire GPU ;
    • Modèle formel de mémoire, qui définit la manière dont les threads simultanés peuvent accéder aux données partagées et aux opérations de synchronisation ;
    • Indexation des descripteurs pour réutiliser les descripteurs de disposition sur plusieurs shaders ;
    • Liens tampon.

    Liste complète des extensions ajoutées :

  • Ajouté plus de 50 nouvelles structures et 13 fonctions ;
  • Des versions abrégées de la spécification ont été préparées pour les plates-formes cibles typiques, simplifiant le travail sur les plates-formes pour lesquelles toutes les extensions ne sont pas encore prises en charge et nous permettant de nous passer de l'activation sélective des capacités de base de l'API Vulkan.
  • Le travail se poursuit sur le projet pour assurer la portabilité avec d'autres API graphiques. Par exemple, Vulkan propose des extensions qui permettent la traduction OpenGL (Zink), OpenCL (clspv, clvk), OpenGL ES (GLOVE, Angle) et DirectX (Extension DXVK, vkd3d) via l'API Vulkan, et aussi, à l'inverse, permettre à Vulkan de fonctionner sur des plateformes sans son support natif (gfx-rs и Cendres pour travailler sur OpenGL et DirectX, MoltenVK et gfx-rs pour travailler sur Metal).
    Extensions ajoutées pour améliorer la compatibilité avec DirectX et HLSL
    VK_KHR_host_query_reset, VK_KHR_uniform_buffer_standard_layout, VK_EXT_scalar_block_layout, VK_KHR_separate_stencil_usage, VK_KHR_separate_third_stencil_layouts et SPIR-V implémentent des fonctionnalités HLSL spécifiques.

Les projets pour l'avenir incluent le développement d'extensions pour l'apprentissage automatique, le traçage de rayons, l'encodage et le décodage vidéo, la prise en charge du VRS (ombrage à taux variable) et des shaders Mesh.

Rappelons que l'API Vulkan notable simplifiant radicalement les pilotes, déplaçant la génération de commandes GPU côté application, la possibilité de connecter des couches de débogage, unifiant l'API pour diverses plates-formes et utilisant une représentation intermédiaire précompilée du code pour l'exécution côté GPU. Pour garantir des performances et une prévisibilité élevées, Vulkan fournit aux applications un contrôle direct sur les opérations GPU et une prise en charge native du multithreading GPU, ce qui minimise la surcharge du pilote et rend les fonctionnalités côté pilote beaucoup plus simples et prévisibles. Par exemple, les opérations telles que la gestion de la mémoire et la gestion des erreurs, implémentées dans OpenGL côté pilote, sont déplacées au niveau application dans Vulkan.

Vulkan couvre toutes les plates-formes disponibles et fournit une API unique pour les ordinateurs de bureau, les appareils mobiles et le Web, permettant d'utiliser une API commune sur plusieurs GPU et applications. Grâce à l'architecture multicouche de Vulkan, qui signifie des outils qui fonctionnent avec n'importe quel GPU, les OEM peuvent utiliser des outils standard de l'industrie pour la révision, le débogage et le profilage du code pendant le développement. Pour créer des shaders, une nouvelle représentation intermédiaire portable, SPIR-V, est proposée, basée sur LLVM et partageant les technologies de base avec OpenCL. Pour contrôler les appareils et les écrans, Vulkan propose l'interface WSI (Window System Integration), qui résout à peu près les mêmes problèmes qu'EGL dans OpenGL ES. La prise en charge de WSI est disponible immédiatement dans Wayland : toutes les applications utilisant Vulkan peuvent s'exécuter dans un environnement de serveurs Wayland non modifiés. La possibilité de travailler via WSI est également prévue pour Android, X11 (avec DRI3), Windows, Tizen, macOS et iOS.

Source: opennet.ru

Ajouter un commentaire