vkd3d 1.2 est livré avec des améliorations de compatibilité, de l'ombrage et plus

Le projet Wine a publié une nouvelle version du package vkd3d 1.2 avec une implémentation Direct3D 12 qui fonctionne en traduisant les appels vers l'API graphique Vulkan.

Cette nouvelle version de vkd3d 1.2 contient plusieurs améliorations, mais les principales qui ressortent sont la disponibilité de libvkd3d-shader en tant que bibliothèque publique , la prise en charge des shaders de tessellation, ainsi que la prise en charge de la sortie de flux.

Le paquet comprend la bibliothèque libvkd3d avec des implémentations Direct3D 12, la bibliothèque libvkd3d-shader avec un traducteur de shaders pour les modèles 4 et 5, et la bibliothèque libvkd3d-utils avec des fonctions simplifiant la migration des applications Direct3D 12, ainsi qu'un ensemble de démonstrations, dont le portage de glxgears vers Direct3D 12. Le code du projet est distribué sous la licence LGPLv2.1.

La bibliothèque libvkd3d prend en charge la plupart des fonctionnalités de Direct3D 12, notamment les fonctions graphiques et de calcul, les listes et files d'attente de commandes, les descripteurs et descripteurs de tas, les signatures racine, l'accès non ordonné, les échantillonneurs, les signatures de commandes, les constantes racine, le rendu indirect, etc.

Libvkd3d-shader assure la conversion des bytecodes 4 et 5 des modèles de shaders en représentation intermédiaire SPIR-V. Il prend en charge les shaders de sommets, de pixels, de tessellation, de géométrie simple et computationnelle, ainsi que la sérialisation et la désérialisation de la signature racine.

Les instructions de shader comprennent des opérations arithmétiques, atomiques et bit à bit, des opérateurs de contrôle et de comparaison de flux de données, des instructions d'échantillonnage, de collecte et de chargement, ainsi que des opérations d'accès non ordonné (UAV, Unordered Access View).

À ce stade de développement, toutes les fonctions Direct3D 12 ne sont pas encore implémentées et les tests ont principalement été réalisés sur un ensemble d'applications de démonstration. Cette version n'inclut pas les fonctionnalités en cours de développement, telles que la prise en charge de la tessellation et des shaders de géométrie complexe, ainsi que plusieurs améliorations relatives aux shaders et aux méthodes principales de Direct3D 12. Ces fonctionnalités seront disponibles dans une version ultérieure.

Principales nouveautés de Vkd3d 1.2

L'un des changements les plus importants de cette nouvelle version est la disponibilité de la bibliothèque libvkd3d-shader pour une utilisation dans des projets tiers, grâce à l'ajout de plusieurs fonctionnalités Direct3D 12, telles que :

  • Multi-échantillonnage.
  • Ressources réservées.
  • Taux de passage des données d'instance.
  • API "Données privées" pour toutes les interfaces.
  • Mappages des composants de la vue des ressources Shader.
  • Extension VK_KHR_draw_indirect_count.
  • Représentation prédicat / conditionnelle.
  • Rendu en profondeur sans pixel shader.
  • Découpe de profondeur. Cela nécessite l'extension VK_EXT_depth_clip_enable.
  • Jeter le rastériseur.
  • Mixage double source.
  • Cartographie des ressources placées.
  • Les méthodes ID3D12Resource ReadFromSubresource () et WriteToSubresource ().
  • Accès simultané aux ressources multi-files d'attente.
  • Vues nulles. Autrement dit, des vues sans ressource sous-jacente.
  • Plusieurs autres demandes de support technique.

En outre, la prise en charge supplémentaire de la conversion, de la sérialisation et de la désérialisation des signatures racine (vkd3d_serialize_versioned_root_signature() et vkd3d_create_versioned_root_signature_deserializer()) est également digne d'intérêt , ainsi que la prise en charge de la sortie en flux continu.

Autre changement notable : la mise en œuvre des variables d’environnement : VKD3D_CONFIG pour définir des options permettant de modifier le comportement de libvkd3d et VKD3D_VULKAN_DEVICE pour remplacer le périphérique pour l’API Vulkan.

De plus, la prise en charge des instructions d'ombrage bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos et une prise en charge préliminaire des shaders du modèle 5.1 ont été ajoutées.

Et également la prise en charge des environnements cibles OpenGL SPIR-V. Cela permet à SPIR-V produit par libvkd3d-shader d'être utilisé avec GL_ARB_gl_spirv. Cela inclut la prise en charge des compteurs atomiques OpenGL et des échantillonneurs combinés.

Enfin, si vous souhaitez en savoir plus sur cette nouvelle version, vous pouvez consulter la liste complète des modifications en suivant ce lien.

Comment installer vkd3d sur Linux?

Pour ceux qui souhaitent pouvoir installer vkd3d sur leur système, ils doivent obtenir le code source et procéder à la compilation, bien que pour des raisons pratiques ou pour ces débutants, ils puissent essayer cette bibliothèque sans trop d'effort. Pour cela, il leur suffit d'installer Lutris et dans ses configurations.

Quant à ceux qui s'intéressent à la compilation, ils doivent obtenir le code avec:

git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"

Enfin, les couches Vulkan doivent être activées:

export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug


Ajouter comme source préférée dans Google