Vulkan arrive avec deux extensions Valve qui améliorent la compatibilité graphique sous Linux

Vulkan 1.4.362 est disponible dès maintenant et est livré avec deux extensions API optimisées par l'équipe graphique Linux de Valve. Au-delà des habituelles corrections de bugs dans ce type de revues de routine, la principale nouveauté réside dans deux améliorations qui affectent directement la compatibilité avec le ray tracing DirectX et la traduction de Direct3D 12 sous Linux.

La mise à jour a été publiée il y a quelques jours et, même si à première vue elle ressemble à une autre révision du calendrier habituel de Vulkan, elle intègre deux extensions que Valve a développées en collaboration avec d'autres fabricants de matériel graphique. L'un d'eux est également une extension de fournisseur exclusive à Valve, ce qui n'apparaît pas dans toutes les révisions de la spécification.

Première extension de valve incluse

La première extension, VK_KHR_pipeline_library_group_handles, vous permet d'interroger les descripteurs de groupe directement à partir des bibliothèques de pipeline, sans nécessiter d'étapes intermédiaires. Cette capacité est déterminante pour améliorer la compatibilité avec la spécification DXR1.1le niveau de traçage de rayons 1.1 de DirectX Ray-Tracing.

De manière générale, ce type de bibliothèque regroupe des états de rendu déjà compilés que l'application peut réutiliser sans avoir besoin de les recompiler à chaque nouveau pipeline graphique. Plus il est possible de partager de pièces de cette manière, plus le temps de compilation en temps réel est court, ce qui est particulièrement sensible en lancer de rayons, où le nombre de combinaisons possibles augmente rapidement.

Derrière cette évolution se cache Hans-Kristian Arntzende l'équipe graphique Linux de Valve, qui a travaillé aux côtés d'ingénieurs d'AMD, Igalia, Intel et NVIDIA. La participation conjointe de ces quatre constructeurs pourrait faciliter l'adoption de l'extension dans les contrôleurs libres et propriétaires de chaque constructeur, même si le calendrier d'intégration dans chacun d'eux reste à confirmer.

Cela améliore la compatibilité graphique sous Linux

La deuxième extension porte le sceau exclusif de Valve. VK_VALVE_buffer_device_address_allocation_alignment est l'œuvre de Hans-Kristian Arntzen et Connor Abbottet vous permet de spécifier l'alignement de toute attribution d'adresse de périphérique tampon, ce que jusqu'à présent la spécification actuelle n'envisageait pas au-delà du minimum nécessaire pour que l'implémentation réponde à ses propres exigences.

De manière générale, l'adresse du périphérique buffer est la fonctionnalité Vulkan qui permet aux shaders d'accéder directement à la mémoire d'un buffer à l'aide d'un pointeur, sans passer par les tables de descripteurs traditionnelles. Plus le développeur a de contrôle sur la façon dont cette adresse est alignée en mémoire, plus il est facile de reproduire le comportement qu'une autre API, telle que Direct3D 12, s'attend à trouver.

La raison de cette extension est le chevauchement d'autres API sur Vulkan, telles que Direct3D 12. La spécification elle-même indique que certaines applications supposent que l'adresse de tampon attribuée aura un alignement supérieur à celui que l'implémentation offrirait normalement, et qu'elles peuvent se comporter de manière inattendue si cet alignement est plus serré que prévu. Cette nouvelle extension donne aux développeurs le contrôle nécessaire pour éviter cela, ce qui est particulièrement utile pour VKD3D-Protonla couche que Valve utilise pour traduire les appels de Direct3D 12 vers Vulkan.

Quels changements pour les jeux Proton et Windows sous Linux

Proton utilise Vulkan justement pour traduire les instructions DirectX à la volée lorsque vous jouez sous Linux vers un titre conçu pour Windows. Si la mémoire n'est pas alignée comme le titre original l'attend, la traduction pourrait entraîner des baisses de performances, un comportement erratique ou des plantages inattendus du jeu, un problème connu dans toute couche de compatibilité de ce type.

Fenêtre de configuration de la couche Linux appelée GE Proton.

L'alignement de la mémoire n'est pas un détail mineur dans le développement d'un moteur graphique : si une application prend une certaine valeur et que la plateforme sous-jacente en propose une différente, le moteur pourrait finir par lire ou écrire dans la mauvaise zone, avec des résultats allant d'une perte de performances à une corruption des données dans le tampon. VK_VALVE_buffer_device_address_allocation_alignment cherche à donner à VKD3D-Proton une marge de manœuvre similaire à celle dont Direct3D 12 dispose déjà sur Windows, rapprochant ainsi le comportement entre les deux plates-formes.

Les deux extensions font désormais partie de la spécification officielle : vous pouvez consulter le texte intégral de Vulkan 1.4.362, ainsi que le reste des corrections incluses dans cette révision, sur Vulkan.org.

FAQ Vulkan 1.4.362

Quelles sont les nouveautés apportées par Vulkan 1.4.362 pour Linux ?

Il comporte deux extensions développées par l'équipe graphique Linux de Valve : l'une améliore la prise en charge du ray tracing DXR 1.1 et une autre vous permet de contrôler l'alignement de la mémoire dans les allocations de tampon.

À quoi sert VK_VALVE_buffer_device_address_allocation_alignment ?

Vous permet de spécifier l'alignement de tout mappage d'adresse de périphérique tampon, destiné à permettre aux couches comme VKD3D-Proton de reproduire plus facilement le comportement de mémoire attendu par Direct3D 12.

Qui a créé les nouvelles extensions Vulkan 1.4.362 ?

VK_KHR_pipeline_library_group_handles a été développé par Hans-Kristian Arntzen de Valve en collaboration avec des ingénieurs d'AMD, Igalia, Intel et NVIDIA. VK_VALVE_buffer_device_address_allocation_alignment est l'œuvre de Hans-Kristian Arntzen et Connor Abbott, tous deux membres de l'équipe graphique Linux de Valve.