Le projet Wine a publié la version du package vkd3d 1.12 avec l'implémentation de Direct3D 12, fonctionnant par la traduction des appels dans l'API graphique Vulkan. Le package comprend les bibliothèques libvkd3d avec l'implémentation de Direct3D 12, libvkd3d-shader avec le traducteur des modèles de shaders 4 et 5, et libvkd3d-utils avec des fonctions pour simplifier le portage des applications Direct3D 12, ainsi qu'un ensemble d'exemples de démonstration, y compris le port de glxgears vers Direct3D 12. Le code du projet est distribué sous la licence LGPLv2.1.
La bibliothèque libvkd3d prend en charge la majorité des fonctionnalités de Direct3D 12, y compris les outils pour la graphique et le calcul, les files d'attente et les listes de commandes, les descripteurs et les descripteurs d'allocations, les signatures racines, un accès désordonné, des échantillonneurs, les signatures de commandes, des constantes racines, le rendu indirect, les méthodes Clear*() et Copy*(). Dans libvkd3d-shader, la traduction du bytecode des modèles de shaders en représentation intermédiaire SPIR-V est mise en œuvre. Les shaders de vertex, pixel, tessellation, calcul, et simples géométriques sont pris en charge, ainsi que la sérialisation et la désérialisation de la signature racine. Parmi les instructions de shaders, des opérations arithmétiques, atomiques et logiques, des opérateurs de comparaison et de contrôle aléatoire des flux de données, les instructions sample, gather et load, ainsi que les opérations d'accès désordonné (UAV, Unordered Access View) sont mises en œuvre.
Dans la nouvelle version :
- Le compilateur HLSL a ajouté la prise en charge de la compilation directe en code assembleur pour les shaders Direct3D et les types cibles SPIR-V.
- Le compilateur HLSL a amélioré la prise en charge des profils des modèles de shaders 1, 2 et 3.
- Pour HLSL, des fonctions intégrées cosh(), determinant(), refract(), sinh() et tanh() ont été mises en œuvre.
- Dans libvkd3d, la prise en charge des formats DXGI_FORMAT_B5G6R5_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM et DXGI_FORMAT_B4G4R4A4_UNORM a été ajoutée, si supportée par l'implémentation actuelle de l'API Vulkan.
- La prise en charge des interfaces ID3D12ShaderCacheSession et ID3D12Device9 a été ajoutée. Des méthodes CreateCommittedResource2(), CreatePlacedResource1(), GetCopyableFootprints1() et GetResourceAllocationInfo2() ont été ajoutées à l'interface ID3D12Device8.
- Des requêtes de vérification D3D12_FEATURE_D3D12_OPTIONS14, D3D12_FEATURE_D3D12_OPTIONS15, D3D12_FEATURE_D3D12_OPTIONS16, D3D12_FEATURE_D3D12_OPTIONS17 et D3D12_FEATURE_D3D12_OPTIONS18 ont été mises en œuvre.
- Dans libvkd3d-shader, une prise en charge expérimentale de la plupart des méthodes et instructions du modèle de shaders 6 du langage intermédiaire DirectX (DXIL) a été ajoutée.
Source : opennet.ru
