DirectX 12: point sur les fonctionnalités et les performances

DirectX 12 sera réservée à Windows 10. Elle ne sera pas portée sur les versions précédentes, Windows 8.1, 8 ou 7. Ceci à cause d’une refonte du modèle de pilote graphique WDDM (qui passe en version 2.0) et qui fait partie intégrante du noyau Windows. Le porter serait une procédure très lourde. Et probablement que Microsoft compte faire le forcing pour qu’on installe son nouveau système… pfff! C’est rangeant. Mais passons sur  ce point car les évolutions restent importantes et Windows 10 sera bel et bien gratuit pour les utilisateurs d’un Windows précédent (à partir de la 7).

Lors de la Game Developers Conference 2015, Phil Spencer, le patron de la division Xbox, a promis une augmentation des performances de l’ordre de 20% sur PC suite à l’arrivée de cet nouvelle API.  Preuve en est, le blog de DirectX révèle que 3DMark note une amélioration de l’utilisation du CPU de l’ordre de 50%, tout en repoussant les limites du parallélisme supporté par DirectX:

2806.cpucompare.png-550x0En haut, ce sont les temps d’exécution des 4 threads sous DirectX11 et en bas, sur DirectX12.

DirectX 12 offre pour ce faire un accès plus direct, plus bas niveau, aux composants matériels, ce qui dispense de coûteuses transactions avec le CPU.

Une démonstration a notamment été réalisée lors de la GDC sur le jeu Lionhead qui tourne sous Unreal Engine 4:

DirectX 12 est effectivement l’équivalent chez Microsoft de Mantle chez AMD. Si ce n’est que contrairement à cette dernière, l’API de Microsoft est interopérable, elle peut fonctionner avec n’importe quelle carte graphique. Cette nouvelle API fonctionne donc à bas niveau sur les GPU, un peu comme Vulkan pour OpenGL.

Sur le jeu Star Swarm, une GeForce GTX 980 passe quant à elle de 26,7 fps avec Direct3D 11 à 66,8 fps avec Direct3D 12, soit un gain conséquent de 150%:

Quelles cartes vont supporter DirectX 12 ? Chez ATI/AMD, les Radeon 7000 et 200, les 260 et 290, et les 285, respectivement. Chez Nvidia ce sera le cas de toutes les Fermi, Kepler et Maxwell, c’est-à-dire des 400 et 500, des 600 et 700, puis des 750 et 900, respectivement.

Et concernant le multi-cartes ? Un message en provenance de Microsoft et publié sur le site LinusTechTips montre que Direct X12 permettra d’utiliser plusieurs cartes graphiques en même temps et en provenance de différents constructeurs. Il sera ainsi possible d’utiliser une puce AMD et une puce NVIDIA en même temps et sans que cela pose problème, en principe.

Se pose aussi la question des gains concernant la Xbox One, dont le GPU est annoncé comme compatible DirectX 12. Les améliorations seront-elles notables en termes de résolution d’affichage et de framerate ? A priori, non !

Quelques nouveautés:

  • Volume Tiled Resources (VTR): Particulièrement utile pour les voxels (volumetric pixels), les textures 3D sont découpées en “tiles” (tuiles) – seules les tuiles utiles seront chargées en mémoire, permettant ainsi un gain important de mémoire et de temps de chargement.

VTR_575px

  • Typed UAV LoadUnordered Access Views (UAVs) est un type spéciale de buffer qui permet à à plusieurs GPU threads d’accéder au même buffer simultanément sans générer de conflits mémoires. A cause de cette nature d’UAVs, certaines restrictions ont été mises en place et implémentées sous le “Typed UAV Load” (les UAVs sont typés)

D3DUAV_575px

  • Conservative Rasterization: A la place d’utiliser un rapide et simple test pour voir si le centre du pixel est entouré par les lignes du poygone, la “conservative Rasterization” va vérifier si le pixel ne recouvre pas le polygone, permettant ainsi de gérer les cas où le polygone est si petit que le test précédent ne fonctionnait pas. Cela permet entre autres une meilleure gestion des collisions et du culling.

D3DCR_575px

07627221-photo-nvidia-maxwell-raster-ordered-view

Pour en savoir plus sur l’architecture et le pipeline de DirectX 12, vous pouvez aller sur cette page.

Voici la vidéo de la présentation lors de la GDC:

Windows 10 devrait être disponible en Automne 2015. Mais notons que la build 9926 de la préversion technique de Windows 10 intègre une version préliminaire de DirectX 12 et le support de nouveaux pilotes de cartes graphiques via WDDM 2.0 (Windows Display Driver Model).

Bon, j’ai sauté le pas, tout s’est bien passé ! 🙂

Capture d'écran 2015-03-21 16.49.38Bon, pour les résultats des tests, on va attendre le 26, non?

Capture d'écran 2015-03-21 16.59.36

Ces articles pourraient aussi vous intéresser …

Le gros live #2

Au programme:  Les news du blog, Veille techno: UE4.22/Raytracing, Paint3D, Rocket3F, VRoid Studio, Scripting UE4 et...