Le groupe Khronos dévoile une nouvelle extension Vulkan ouverte pour éliminer le besoin de pipelines

Le groupe Khronos a révélé plus tôt cette semaine que l’extension Vulkan permettrait à plusieurs fournisseurs de tenter d’autoriser l’accès pour gérer facilement la façon dont le logiciel peut “spécifier les shaders et les états des shaders”. La nouvelle extension est remplacée par VK_EXT_shader_object, qui introduira “un nouveau type d’objet VkShaderEXT représentant une seule étape de shader compilé”. La société ajoutera quatre nouvelles fonctions pour utiliser et ajuster les objets dans la nouvelle extension Vulkan.

Vulkan peut désormais être implémenté dans de futurs projets sans avoir besoin de pipelines

La suppression des pipelines pour l’extension Vulkan permet plus de flexibilité et de simplicité lors de l’utilisation d’objets shader, permettant aux fournisseurs de choisir d’utiliser uniquement des pipelines, des objets shader ou une combinaison des deux pour chaque projet.

Les objets Shader fonctionnent différemment des pipelines dans la mesure où :

  • Les pipelines nécessitent que toutes les combinaisons souhaitées de shaders (toutes les étapes lors de l’utilisation de pipelines “monolithiques” conventionnels ou certaines combinaisons prédéfinies d’étapes lors de l’utilisation de bibliothèques de pipelines) soient compilées ensemble. En revanche, les objets shader permettent d’assembler des étapes dans des combinaisons arbitraires, y compris la compilation de chaque shader individuellement.
  • Avec les pipelines, la liaison est une étape explicite qui crée un nouvel objet avec sa propre vie qui doit être gérée par l’application. Avec les objets shader, la liaison est simplement une promesse au moment de la création de l’application à l’implémentation qu’elle utilisera toujours des combinaisons spécifiques d’objets shader.
  • Les pipelines doivent toujours être liés avant utilisation, tandis que la liaison des objets shader est facultative.
  • Les pipelines permettent aux implémentations d’exiger que certains états soient fournis statiquement au moment de la compilation, alors qu’avec les objets shader, tous les états sont toujours définis dynamiquement et sont indépendants des shaders.
  • Les pipelines nécessitent des formats de pièces jointes de rendu spécifiés au moment de la création du pipeline, contrairement aux objets shader. Les objets Shader peuvent être utilisés avec n’importe quelle combinaison valide de formats de pièce jointe pris en charge par l’appareil.
  • Avec les pipelines, l’application peut récupérer et réutiliser le code de shader compilé comme cache de pipeline, mais ces données ne sont pas utilisées pour créer de nouveaux pipelines. Avec les objets shader, le code de shader compilé peut être récupéré directement à partir de n’importe quel objet shader et est garanti pour être utilisé pour créer un objet shader équivalent sur n’importe quel appareil physique compatible sans avoir besoin de fournir le SPIR-V d’origine.

Khronos assure que la mise en œuvre de l’extension Vulkan dans un projet n’entravera pas les performances du projet. Cela est dû au fait que les objets de shader sont plus optimisés que les pipelines lorsqu’il s’agit d’affecter le processeur et qu’ils ont un impact négatif négligeable sur le GPU. La société note également que “les améliorations des performances du processeur à partir d’un code d’application plus simple utilisant des API d’objet de shader peuvent surpasser suffisamment le code d’application équivalent repensé pour utiliser des pipelines pour que les améliorations de performances de l’application l’emportent sur le coût des frais généraux de mise en œuvre supplémentaires”.

Des exigences spécifiques de performances ont été satisfaites en incorporant l’implémentation VK_EXT_shader_object :

  • Les appels de dessin utilisant des objets shader ne doivent pas prendre plus de 150 % du temps CPU des appels de dessin utilisant des pipelines graphiques entièrement statiques
  • Les appels de dessin utilisant des objets shader ne doivent pas prendre plus de 120 % du temps CPU des appels de dessin utilisant des pipelines graphiques dynamiques au maximum
  • Les appels de répartition à l’aide d’objets shader de calcul ne doivent pas être sensiblement plus lents que les appels de répartition à l’aide de pipelines de calcul
  • La création d’un objet shader à partir d’un code shader binaire ne doit pas prendre plus de 150 % du temps CPU du coût de la copie d’une quantité équivalente de données dans la mémoire locale de l’appareil

La société prévoit que la nouvelle extension Vulkan commencera à être largement adoptée, ce qui contribuera à la croissance et permettra d’autres améliorations et ajouts au fil du temps. NVIDIA propose une version bêta du nouveau VK_EXT_shader_object dans son dernier pilote sur le site des développeurs de NVIDIA. Khronos a également ajouté une nouvelle couche implémentant la prise en charge des pilotes existants en tant que dernière mise à jour du référentiel Vulkan-ExtensionLayer, avec des versions binaires expédiées en tant qu’inclusion du SDK Vulkan lors de la sortie de la prochaine version.

Vous pouvez trouver plus d’informations sur la mise en œuvre et le support sur la page des spécifications Vulkan.

Sources d’actualités : Blog des développeurs NVIDIA, Khronos Group Github

Partagez cette histoire

Facebook

Twitter

Laisser un commentaire