L'équipe Wine a publié VKD3D 2.0 — une grande version de la bibliothèque qui implémente le fonctionnement des applications avec Direct3D 12 sur Vulkan. VKD3D est utilisé dans la version normale de Wine pour le support des applications D3D12 ; il ne faut pas le confondre avec VKD3D-Proton, une branche de jeu distincte de Valve, utilisée dans Proton/Steam Play.
Le projet est distribué sous la licence GNU Lesser General Public License version 2.1 ou ultérieure. Le code source de la version est publié sur le serveur WineHQ, le code est également disponible via les dépôts Wine.
VKD3D 2.0 a été une transition de la branche 1.19 directement vers une nouvelle version majeure. L'accent principal a été mis sur le développement du sous-système de shaders et la compatibilité bas niveau avec Direct3D 12.
Principaux changements :
Le traitement des shaders HLSL a été amélioré. Le support du langage HLSL a été élargi : plus d'opérations ont été mises en œuvre et sont désormais traitées correctement par le compilateur et le traducteur VKD3D. Cela est important pour exécuter des applications qui utilisent leurs propres shaders HLSL, et pas seulement du bytecode précompilé.
Le support du bytecode Direct3D legacy a été amélioré. Le traitement de l'ancien type de bytecode Direct3D a été optimisé pour la compatibilité avec les anciens formats de shaders et les outils toujours présents dans les applications et moteurs.
Le travail sur DXIL a été amélioré. Dans VKD3D 2.0, le traitement de DXIL — une représentation intermédiaire moderne des shaders DirectX — a été poursuivi. Pour D3D12, c'est l'un des formats clés, donc ces changements influencent directement la capacité de lancer des applications plus récentes.
Des améliorations ont été ajoutées pour les effets. La version a inclus des changements liés aux effets — des mécanismes de description et d'application des effets graphiques dans la pile Direct3D. Cela fait plutôt partie de l'infrastructure, mais elle est importante pour la compatibilité avec le code graphique existant.
Un support expérimental pour MSL a été ajouté. VKD3D 2.0 a obtenu un support expérimental pour la génération de MSL — Metal Shading Language. Cette direction est liée à la portabilité de la partie shader sur les plateformes où Vulkan est généralement utilisé via des couches de compatibilité supplémentaires.
Interfaces et fonctionnalités de débogage élargies. Les développeurs ont ajouté de nouvelles interfaces et amélioré les outils de débogage de VKD3D, ce qui devrait faciliter le développement, le diagnostic des erreurs et le futur soutien de Direct3D 12 dans Wine.
Il convient de souligner que, pour la plupart des utilisateurs de Steam sous Linux, le principal composant D3D12 reste VKD3D-Proton, et non pas le VKD3D classique. Néanmoins, VKD3D reste une partie importante de Wine et sert de mise en œuvre de base de Direct3D 12 au-dessus de Vulkan dans le projet upstream.
Source : linux.org.ru
