DirectX 12 : quand le pire côtoie le meilleur

0
Avec le lancement de Windows 10, l'été dernier, Microsoft proposait pour la première fois son API DirectX 12. Une nouvelle API pour les jeux qui se montre bien plus optimisée que les précédentes moutures de DirectX. Huit mois plus tard, les premiers jeux DirectX 12 apparaissent et le moins que l'on puisse écrire, c'est que tout n'est pas encore rose. Loin s'en faut.

Contrairement à ses prédécesseurs, DirectX12, la nouvelle API de Microsoft n'est disponible que sous Windows 10. Une façon pour Microsoft de forcer quelque peu la main aux joueurs en les incitant à migrer vers un OS réputé plus moderne qui, c'est promis, propose une API graphique tout aussi moderne car beaucoup plus bas niveau que par le passé !

Inspirée des travaux d'AMD autour de Mantle, DirectX 12 en reprend clairement les bases : réduire la consommation processeur associée au rendu graphique, et libérer ainsi des ressources, notamment au niveau de la gestion de plusieurs cœurs d'exécution. En filigrane, une vieille promesse chère aux développeurs de jeux vidéo : extraire le maximum de performance d'une configuration donnée. Une possibilité qui va de pair avec une plus grande responsabilisation des développeurs : ceux-ci ont plus de contrôle sur leur code et doivent se soucier de choses qu'ils laissaient autrefois aux bons soins de DirectX, en fermant quelque peu les yeux.

07964395-photo-directx-12.jpg


Plus de 8 mois après la disponibilité de Windows 10 et donc de DirectX 12, les premiers jeux sont maintenant disponibles. Et si nous vous parlions longuement de DirectX 12 et de ses promesses l'an dernier, l'arrivée des premiers jeux nous permet d'être plus concret. Ashes of Singularity a fait parler de lui en servant de benchmark pour AMD comme pour NVIDIA et en permettant notamment de s'intéresser aux performances CPU sous DirectX 12. Mais ce n'est peut-être pas le plus populaire des jeux, du reste, disponible en early access. Du côté des jeux vidéo, le support de DirectX 12 devait arriver avec Fable Legends chez Microsoft, un jeu finalement abandonné.

0230000008397118-photo-directx-12-dxdiag.jpg


L'éditeur a tout de même commercialisé Gears of War: Ultimate Edition, un jeu qui requiert effectivement DirectX 12, mais dont le moteur graphique, l'Unreal Engine, date de 2006 et n'a pas été amélioré si ce n'est pour supporter les nouvelles résolutions d'affichage, dont le 4k (voir à ce sujet : Microsoft sur le point de verrouiller le jeu PC avec Windows 10 ?).

00FA000008397190-photo-gears-of-war-ultimate-edition-uwp-2.jpg
00FA000008397194-photo-gears-of-war-ultimate-edition-uwp-4.jpg
00FA000008397196-photo-gears-of-war-ultimate-edition-uwp-5.jpg

Gears of War: Ultimate Edition sous Windows 10


Article initialement publié le 30 mars 2016

Suite à la première publication fin mars de ce dossier, nous le mettons à jour pour vous proposer un point de vue actualisé suite au lancement de Quantum Break sur PC et aux annonces de Microsoft lors de la dernière Build.

Rise of the Tomb Raider

Finalement que nous reste-t-il en vrais jeux majeurs DirectX 12 ? Pas grand-chose pour le moment. Ainsi Rise of the Tomb Raider, sorti en début d'année, fait partie des titres DirectX 12. Quelques explications sont de mise. Tout d'abord, il y a deux versions de Rise of the Tomb Raider : l'une vendue par Microsoft sur son Windows Store, l'autre vendue sur Steam. On pourrait croire que le jeu est identique d'une plate-forme à l'autre sauf que ce n'est pas exactement le cas. Les acheteurs en provenance du Windows Store ont reçu une version UWP, autrement dit Universal Windows Platform, tandis que les acheteurs Steam disposent d'une version Win32. Sans revenir sur les conséquences au quotidien de ce choix (verrouillage de la V-sync, non compatibilité des apps UWP avec la plupart des solutions tierces de type FRAPS, GeForce Experience, LGS, etc) il y a une autre réalité plus fâcheuse.

Nixxes, responsable du portage de Rise of the Tomb Raider sur PC, publiait il y a peu le patch 5 pour la version DirectX 12 du jeu. Un patch a priori sympathique qui n'a été disponible qu'au travers de Steam dans un premier temps. La version Windows Store a pris son temps et est finalement arrivée avec plusieurs jours de retard. Depuis, aussi bien la version UWP, que la version Steam disponible sur Windows 10 (Win 32), ont accès à DirectX 12, tandis que l'éditeur a démarré la distribution du patch 6 qui ne change pas grand-chose en termes de moteur graphique.

000000E108397012-photo-directx-12-rotr-uwp-2.jpg
000000E108397010-photo-directx-12-rotr-uwp-1.jpg

Rise of the Tomb Raider : la version UWP avec son support de DirectX 12


Au-delà de ce débat UWP/Win32, la version DirectX 12 de Rise of the Tomb Raider crée toutefois la surprise : le SLI comme le Crossfire ne sont tout simplement pas supportés. Ainsi, Nixxes explique que le jeu nécessite un support explicite du multi-GPU, ce qui n'est pas le cas en DirectX 12. Le studio invite les possesseurs de configuration multi-GPU à rebasculer en DirectX 11... pour profiter de leur SLI ou Crossfire (on appréciera).

01F4000008397126-photo-nixxes-directx-12-explicit-mgpu.jpg

Rise of the Tomb Raider : commentaire officiel de Nixxes sur le support du Crossfire et du SLI


Tandis que Nixxes suggère à demi-mot que les performances seront meilleures pour les possesseurs de système multi-GPU en DirectX 11 plutôt qu'en DirectX 12, cela nous rappelle un point important : DirectX 12 propose une nouvelle gestion du multi-GPU.

00FA000008397206-photo-rise-of-the-tomb-raider.jpg
00FA000008397204-photo-rise-of-the-tomb-raider-dx12-2.jpg
00FA000008397202-photo-rise-of-the-tomb-raider-dx12-1.jpg

Rise of the Tomb Raider en DirectX 12

DirectX 12 et le multi-GPU

Non content d'offrir un accès plus bas niveau aux ressources graphiques, l'API DirectX 12 donne aux développeurs de jeux le contrôle sur les systèmes multi-GPU. Avec la promesse de permettre notamment, si cela est géré par le jeu, de faire du mix & match, autrement dit exploiter des GPU de marque différente en simultané. C'est ce qu'on appelle le support explicite du multi-GPU : c'est au jeu d'expliciter comment il entend gérer plusieurs puces graphiques à la fois avec deux niveaux d'API.

Et ne croyez pas que le but à court terme soit forcément de profiter de la puissance conjuguée d'une Radeon et d'une GeForce. Ce scénario d'utilisation est anecdotique, et il sera plus probable de voir des utilisateurs intéressés par le fait de mixer des GPU de même marque, mais pas forcément de même gamme : aussi, on peut envisager une configuration multiGPU avec une GeForce GTX 980 et une GeForce GTX 970 ou une configuration similaire en AMD - Fury Pro et Fury X par exemple. Mais c'est bien in fine au développeur du jeu de supporter ou non cette fantaisie.

Qui plus est, DirectX 12 doit permettre une meilleure gestion de la mémoire vidéo en configuration multi-GPU : plutôt que de dupliquer le contenu de la mémoire de la carte A sur la carte B, il est possible de créer une zone de mémoire unifiée, partagée entre les deux GPU. En d'autres termes, si jusqu'alors la quantité de mémoire vidéo ne s'additionnait pas en SLI ou CrossFire, elle le sera via DirectX 12 si le jeu a été conçu pour cela.

Ce n'est donc plus le pilote qui choisit le meilleur mode de rendu multiGPU mais le développeur du jeu. Ainsi, Ashes of Singularity propose un mode AFR en multi-GPU où chaque GPU va calculer une image distincte. Il faut alors que le développeur du jeu se donne la peine de développer ce support explicite.

01E5000008397158-photo-nvidia-sli-rendering-2005.jpg

Schéma de rendu du SLI de NVIDIA tel qu'expliqué au lancement en 2005


Interlude VXAO

Et pour les déçus de DirectX 12 sous Rise of the Tomb Raider, le jeu introduit une nouvelle fonctionnalité graphique exclusive aux cartes graphiques NVIDIA, et plus précisément réservée aux seules puces Maxwell. Il s'agit du VXAO, une nouvelle technique qui utilise des voxels, autrement dit des volumetric pixels ou des pixels en 3D, pour déterminer le look & feel des ombres et de l'éclairage.

0190000008398174-photo-nvidia-vxao.jpg


L'idée étant de proposer une solution plus précise que les actuels modes d'occlusion SSAO et HBAO. Intégrée par le biais de la dernière mouture de Gameworks, la boîte à outils du développeur selon NVIDIA, cette fonction VXAO fait donc son apparition dans le dernier patch de Rise of the Tomb Raider. Une fonction qui... surprise... n'est pas disponible en mode de rendu DirectX 12 mais uniquement en DirectX 11. NVIDIA indique toutefois travailler à un support VXAO sous DirectX 12. On ne sait pas, cependant, si celui-ci sera opérationnel sur les puces graphiques à architecture Maxwell ou s'il sera réservé aux futures puces Pascal.

01E5000008397114-photo-rise-of-the-tomb-raider-vxao.jpg

Rise of the Tomb Raider avec support du VXAO

Hitman : l'agent 47 passe à DirectX 12

Hitman vient de débarquer sur PC et si d'aucuns ne diront qu'il s'agit d'un jeu en early access vendu sous la robe d'un titre AAA classique, le jeu, via son moteur graphique Glacier, supporte DirectX 12. L'utilisateur a le choix entre les deux modes de rendu, DirectX 11 et DirectX 12. Le développeur indique au passage que le moteur graphique Glacier n'a pas été entièrement redéveloppé pour DirectX 12 : certaines parties sont encore en DirectX 11.

Le jeu a pour le moment quelques subtilités agaçantes... au-delà de sa durée de vie. Hitman détecte la carte graphique principale du système et ajuste automatiquement ses paramètres en fonction des tests de l'éditeur. Si l'intention est louable, il est plus crispant de voir que le jeu verrouille les options de rendu trop gourmandes pour la carte installée. Ainsi le mode Ultra n'est pas accessible à tous les utilisateurs... Loin s'en faut. Ce qui pose bien sûr problème dans le cas des configurations SLI ou CrossFire puisque le jeu ne les détecte pas et n'en tient pas compte dans ses options de rendu présélectionnées.

01C2000008397116-photo-hitman-directx-12-options-gris-es.jpg

Hitman sur une GeForce GTX 960 : les options "Moyen" & "Haut" pour la Qualité de texture sont grisées


Qui plus est et comme le notent plusieurs utilisateurs, le jeu a pour particularité de planter assez régulièrement lors du chargement de la seule et unique mission se déroulant à Paris si le rendu DirectX 12 est activé. Il suffit de le désactiver pour remédier au plantage du jeu lors du chargement.

A cela s'ajoute le fait qu'en l'état, le jeu ne tire pas profit du Crossfire... ni du SLI avec son rendu DirectX 12 (le Crossfire en DirectX 11 fonctionne, tout comme le SLI, mais uniquement en rendu DirectX 11). Autrement dit, c'est le deuxième titre DirectX 12, le troisième si l'on prend en considération Gears of War : Ultimate Edition, à ne pas profiter du rendu multiGPU. Et de surcroît, le jeu est parfois cappé à 60 images par seconde. AMD précise que dans ce cas, une bidouille permet de contourner le capping en branchant un second écran allumé à la carte graphique.

0190000008398412-photo-hitman-2016-1.jpg
0190000008398414-photo-hitman-2016-2.jpg


Quantum Break

Depuis la publication de notre papier, Quantum Break est finalement arrivé. Et si le très attendu titre de Remedy est sorti sur Xbox One, il s'est aussi frayé un chemin sur PC, dans le Windows Store, au prix de lancement de 69,99 euros TTC. Exclusivité Windows 10, Quantum Break pour PC est à la fois une app de type UWP et un jeu DirectX 12. Ce qui n'est pas sans poser problème puisque le jeu rencontre les mêmes limites que les autres titres dont nous vous parlions déjà, avec, en prime, de nouveaux bugs, cela ne serait probablement pas drôle autrement. Il y a des problèmes de performance, pour certains, dus à un bug dans le jeu, pour d'autres, liés à un manque d'optimisation avec les cartes AMD ou NVIDIA, notamment au niveau de l'utilisation de la mémoire vidéo.

Comme tous les jeux UWP, Quantum Break force la synchronisation verticale. Cela devrait être corrigé - comme promis par Microsoft - au niveau de la plate-forme et d'ailleurs, tous les titres UWP en bénéficieront normalement. Au-delà des problèmes spécifiques au portage PC de Quantum Break, des crashs aux frame drops, il est intéressant de noter que le jeu ne supporte pas les solutions multi-GPU. Là encore, le Crossfire et le SLI sont donc bannis. Remedy explique à ce sujet :

08420844-photo-quantum-break-remedy-sli-crossfire.jpg


« Malheureusement Quantum Break sur Windows 10, ne supporte pas le rendu multi-GPU DirectX 12. Du fait de l'architecture de notre moteur de jeu, le travail nécessaire pour prendre en charge de multiples GPU aurait été important et hors sujet pour Remedy et Quantum Break »

Ici, Remedy admet ce que nous supputions lors de la première publication de notre dossier centré sur DirectX 12. Le multiGPU dont le support est maintenant à la charge des développeurs, n'est pas pris en compte car cela demanderait trop de travail. Certains argueront que le problème est peut-être plus à chercher du côté du moteur du jeu vidéo que du travail effectivement nécessaire, mais malgré tout, le résultat est le même pour le joueur PC : pas de support SLI ou Crossfire.

0190000008400346-photo-clubic-quantum-break-premieres-utilisation-du-temps-2406531-476392-854x480-3-jpg.jpg
0190000008397112-photo-quantum-break.jpg


DirectX 12 support explicite : Crossfire et SLI en panne

Nous l'évoquions plus haut, Direct X 12 introduit deux supports pour les développeurs de jeux vidéo. Le support implicite : sur le papier, il offre la meilleure compatibilité avec les pilotes et l'écosystème matériel actuel ; le support explicite, lui, permet de profiter des raffinements de la nouvelle API.

Nous pensions donc que les jeux DirectX 12 qui ne mettaient pas en avant des fonctions sympathiques en termes de rendu multi-GPU, étaient en réalité des jeux avec un support implicite. En d'autres termes, qu'ils fonctionnaient comme les jeux DirectX 11 actuels, en laissant au pilote graphique le soin de gérer Crossfire, SLI et autres fonctions de ce genre. Il s'avère que pour Hitman comme pour Rise of the Tomb Raider, ce présupposé est visiblement faux.

Les titres DirectX 12 sont développés par défaut avec un support explicite, ce qui se traduit dans le cas de Hitman, comme dans celui de Rise of the Tomb Raider, par une absence pure et simple du support multi-GPU, les développeurs n'ayant pas jugé opportun de consacrer du temps à ces développements.

01E5000008398416-photo-nvidia-sli.jpg


Ce comportement redouté, et hélas avéré, nous a été confirmé par AMD qui nous indique : « Avec DirectX 12, le mode mGPU Explicit est l'approche par défaut. L'intention et l'esprit de DirectX 12 (donner aux apps un plus grand contrôle) sont que les apps supportent le mGPU de manière explicite ».

Très bien, mais dans ce cas, à quoi bon expliciter un support qui se résume, pour le multi-GPU, aux abonnés absents ? Nous avons bien sûr interrogé NVIDIA avec les mêmes questions. La marque au caméléon semble assez gênée par le sujet et ce qu'il dessine en filigrane : un moindre intérêt à court et moyen termes des solutions multiGPU sur PC et donc du SLI sur lequel NVIDIA a beaucoup investi ces dernières années.

Une mise à jour de la plate-forme UWP en préparation

C'est lors de l'édition 2016 de la Build, tenue il y a quelques semaines à San Francisco, que Microsoft a évoqué, par la voix de Phil Spencer, l'arrivée d'une mise à jour de la plate-forme UWP. L'idée étant de lever certaines restrictions, non spécifiques à DirectX 12, mais affectant la plupart des jeux Windows 10 dont nous parlions dans cet article (Gears of War : Ultimate Edition & Quantum Break) notamment au niveau du verrouillage de la V-Sync.

Ainsi Microsoft prévoit de déverrouiller la synchronisation verticale et de supporter les technologies d'écran de type Freesync et G-Sync. Le géant des logiciels n'a cependant pas précisé le modus operandi de cette mise à jour. Nouvelle version de Windows 10, platform update, simple patch ? Les contours sont flous mais Redmond s'est engagé pour une mise en ligne courant mai.

01C2000008398388-photo-microsoft-phil-spencer.jpg
Voici la configuration utilisée pour évaluer les performances de DirectX 12 :

0000008C05146328-photo-corsair-air-series-dans-un-carbide-300r.jpg
  • Carte mère Asus Z170 Deluxe (BIOS 1602),
  • Processeur Intel Core i7 6700K,
  • 16 Go (2x 8 Go) Mémoire DDR4-2666 Corsair @ 2133,
  • SSD Samsung Serie 840 Pro 256 Go,
  • Alimentation CoolerMaster V1200 Platinum


Sur cette plate-forme, nous utilisons deux GPU : pour AMD nous avons recours au Radeon Fury X, pour NVIDIA au GeForce GTX Titan X. Notre système tourne sous Windows 10, dans sa version 1511 avec toutes les mises à jour disponibles, alors que côté pilotes, nous employons les Radeon Software Crimson 16.3.2 et les pilotes GeForce 364.72.

Nous optons pour une seule et unique résolution, le 3 840 x 2 160 des écrans 4K.

Ashes of the Singularity - Crazy - MSAA 4x

08398124-photo-directx-12-benchs-ashes-of-singularity.jpg

Entre jeu de stratégie et benchmark DirectX 12, Ashes of the Singularity est un jeu proposé sur Steam en early access. Si le jeu n'est pas le plus populaire, c'est l'un des premiers à avoir supporté DirectX 12 et à servir de benchmark. Plutôt optimisé pour AMD, Ashes of the Singularity montre des performances supérieures pour notre Fury X face au GeForce GTX Titan X. Ici l'explication est probablement à chercher du côté des shaders asymétriques. Pour autant il est intéressant de constater que l'écart de performances entre rendu DirectX 11 et rendu DirectX 12 est limité que ce soit sur AMD ou NVIDIA. Dans les deux cas le passage de DirectX 11 à DirectX 12 augmente les performances de 1,8%. Rien de bien transcendant.

Hitman - Ultra/FXAA/16x/SSAO - Score moyen CPU

08398126-photo-directx-12-benchs-hitman.jpg

Sorti récemment, dans un état discutable (une seule et unique mission), Hitman prend en charge DirectX 12. Alors que la Fury X d'AMD devance la GeForce GTX Titan X de NVIDIA, le jeu se montre moins performant dans les deux cas en activant le rendu DirectX 12 : on perd entre 2 et 3% de performance pour le score moyen CPU (le score GPU n'étant pas disponible dans le bench DirectX 12 allez comprendre).

Rise of the Tomb Raider - Très élevé - FXAA/16x/HBAO+

08398128-photo-directx-12-benchs-rise-of-the-tomb-raider.jpg

Rise of the Tomb Raider enfin, dans sa version PC donne une représentation inversée des performances AMD vs NVIDIA. Ici notre GeForce GTX prend le large. Et tandis que sur GeForce le passage à DirectX 12 n'impacte que très peu les performances, le passage à DirectX 12 sur Fury X est lourd de conséquence avec une pénalité de 9% sur les performances.

Conclusion

Vous l'aurez compris, l'arrivée des jeux DirectX 12 soulève un certain nombre de questions. Les premiers titres AAA ne sont pas forcément les plus optimisés et les diverses lacunes ne manquent pas. L'une des plus criantes étant le désamour, difficilement explicable, des configurations multi-GPU qui semblent largement pénalisées par DirectX 12.

Ce n'est pas forcément une si grande surprise lorsqu'on réalise que c'est au développeur d'adapter son jeu au multi-GPU, alors que cette tâche était préalablement confiée aux bons soins des équipes développant les pilotes chez AMD ou NVIDIA. Et si les modes implicite et explicite sèment le trouble, il semble se confirmer que les jeux DirectX 12 sont par défaut explicites, ce qui fait qu'ils ne peuvent bénéficier d'une prise en charge SLI/Crossfire par le pilote comme préalablement. Et si le développeur ne s'est pas penché sur la question... le jeu ne profitera pas des configurations multiGPU et de l'apport de puissance attendu (et crucial pour jouer en 4K par exemple).

Il faudra bien sûr surveiller la situation et son évolution en espérant que les développeurs de jeu aillent au bout de la démarche et du plus grand contrôle qu'ils ont maintenant sur l'exécution de leurs titres. Mais en l'état, DirectX 12 semble condamner le multiGPU sur les premiers titres AAA.

01C2000008398326-photo-avertissement-directx-12.jpg


Les quelques benchmarks que nous vous proposons, avec des jeux AAA et pas seulement Ashes of Singularity, montrent, s'il en est, que le gain de performance promis n'est pas toujours aussi évident qu'il n'y paraît. Et plus fréquemment d'ailleurs, le gain de performance se fera au niveau du CPU puisque niveau GPU c'est plutôt le statu quo voir la douche froide. Comme prévu, c'est effectivement aux développeurs de travailler à optimiser leur code pour égaler les performances GPU en DirectX 11 avec DirectX 12.

La sortie début avril de Quantum Break a malheureusement confirmé nos craintes, le jeu de Microsoft dans sa version PC illustrant tristement les limitations tout à la fois de la plate-forme de UWP et de DirectX 12. En effet, le jeu s'ajoute à la liste grandissante des jeux DirectX 12 ne supportant pas Crossfire et SLI alors qu'il est logiquement affecté par le verrouillage forcé de la synchronisation verticale. Notez à ce sujet que Microsoft s'est engagé à proposer une mise à jour courant mai pour lever certaines restrictions autour de l'UWP.

0217000008398390-photo-microsoft-directx-12.jpg
Haut de page