Le projet Wine a publié Vkd3d 1.3 avec l'implémentation de Direct3D 12

Après un an et demi de développement, le projet Wine a publié la sortie du package vkd3d 1.3 avec une implémentation Direct3D 12 qui fonctionne via la diffusion d'appels à l'API graphique Vulkan. Le package comprend les bibliothèques libvkd3d avec des implémentations de Direct3D 12, libvkd3d-shader avec un traducteur des modèles de shader 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 un portage. de glxgears vers Direct3D 12. Le code du projet est distribué sous licence LGPLv2.1.

La bibliothèque libvkd3d prend en charge la plupart des fonctionnalités de Direct3D 12, notamment les fonctionnalités graphiques et de calcul, les files d'attente et les listes de commandes, les handles et les handles de tas, les signatures racine, l'accès dans le désordre, les échantillonneurs, les signatures de commande, les constantes racine, le rendu indirect, les méthodes Clear *( ) et Copier*().

Dans libvkd3d-shader, la traduction du bytecode des modèles de shader 4 et 5 en une représentation SPIR-V intermédiaire est implémentée. Les shaders de sommet, de pixel, de tessellation, de calcul et de géométrie simple, la sérialisation et la désérialisation de signature racine sont pris en charge. Les instructions de shader incluent des opérations arithmétiques, atomiques et binaires, des opérateurs de comparaison et de contrôle de flux de données, des instructions d'échantillonnage, de collecte et de chargement, des opérations d'accès non ordonnées (UAV, Unordered Access View).

Parmi les innovations les plus significatives de Vkd3d 1.3 figurent :

  • Ajout de la prise en charge initiale de la compilation et du prétraitement des shaders en HLSL (High-Level Shader Language), fourni à partir de DirectX 9.0.
  • Ajout de la prise en charge des tableaux de descripteurs définis dans le modèle de shader 5.1.
  • Fournit la prise en charge des opérations à virgule flottante double précision dans les shaders, l'adressage indirect pour les shaders de tessellation, l'exportation de pochoirs à partir des shaders, un modificateur de shader « précis » et des barrières globales aux ressources mémoire.
  • La possibilité de désassembler les shaders Direct3D du bytecode en représentation d'assemblage a été implémentée.
  • Ajout de la prise en charge de l'analyse de l'ancien format de bytecode Direct3D utilisé dans les modèles de shader Direct3D 1, 2 et 3.
  • libvkd3d ajoute des fonctionnalités Direct3D 12 telles que les signatures racine, les compteurs de vues dans le désordre, les opérateurs de fusion logiques pour la sortie et le mode d'adressage de texture miroir_once. Ajout de la structure vkd3d_host_time_domain_info.

Source: opennet.ru

Ajouter un commentaire