DirectX 11 vs. DirectX 12 : Quelles sont les différences et que devriez-vous utiliser ?
DirectX 12 a été lancé en même temps que Windows 10 en 2015. Avec sa sortie, DirectX 12 de Microsoft a inauguré une nouvelle ère pour les joueurs et les développeurs de jeux. Capable de réduire les frais généraux du processeur tout en stimulant les performances du GPU, DirectX 12 s’est rapidement fait un nom.
Cependant, l’amélioration des performances est-elle aussi simple que de passer de DirectX 11 à DirectX 12 ? Pour le savoir, examinons les différences entre DirectX 11 et 12.
Qu’est-ce que DirectX de Microsoft ?
Comme nous l’avons expliqué dans notre présentation de Microsoft DirectX, DirectX est un ensemble d’interfaces de programmation d’applications (API) utilisées pour gérer les tâches liées au multimédia. Cela inclut la programmation de jeux sur les plates-formes Microsoft telles que Windows et Xbox. Pour situer le contexte, parlons brièvement des API.
Une API permet à deux programmes informatiques ou plus de communiquer entre eux, comme nous l’avons expliqué dans notre aperçu des API. Pensez-y comme à un téléphone. Si votre mère vous envoie une liste de courses par SMS, votre téléphone recevra ces données et les affichera pour vous. Il s’agit en fait d’une API.
Quelles sont les différences entre DirectX 11 et DirectX 12 ?
Quelles sont donc les différences entre DirectX 11 et DirectX 12 ? En termes simples, DirectX 12 est la dernière version de DirectX. L’une des différences les plus notables est la manière dont ils interagissent avec votre matériel. La plupart des jeux développés avec DirectX 11 n’utilisent que deux à quatre cœurs de processeur. L’un de ces cœurs indique généralement au GPU ce qu’il doit faire.
Le jeu utilise alors les cœurs restants pour gérer divers paramètres nécessitant l’intervention de l’unité centrale, comme les particules ou la distance de dessin du jeu. En revanche, DirectX 12 répartit la charge de travail de l’unité centrale sur plusieurs cœurs et permet à chaque cœur de communiquer simultanément avec le GPU.
DirectX 12 est également doté de quelques fonctions sophistiquées. Il s’agit notamment du calcul asynchrone et des objets d’état de pipeline (PSO). Le calcul asynchrone augmente l’utilisation du GPU en permettant à plusieurs charges de travail de travailler en parallèle. Cela permet d’exploiter pleinement le potentiel de votre GPU.
Outre le rendu graphique, votre GPU gère un large éventail d’autres tâches, telles que l’exécution d’algorithmes d’apprentissage automatique. Avec DirectX 11, le GPU ne peut effectuer qu’une seule de ces tâches à la fois et dans un certain ordre. Les performances en pâtissent, car les ressources de votre GPU ne sont pas utilisées efficacement.
Pensez-y comme à un serveur dans un restaurant. Lorsqu’il prend votre commande, il vous demande d’abord ce que vous voulez boire. Une fois que vous avez reçu vos boissons, il vous demande ce que vous voulez pour le plat principal. Votre commande est prise par étapes. Le serveur ne va pas vous demander ce que vous voulez comme dessert avant d’avoir pris votre plat principal. Bien que cette méthode soit efficace, elle n’est pas aussi efficiente qu’elle pourrait l’être.
En informatique, une ressource GPU différente s’occuperait de chacune des tâches du serveur. Jusqu’à ce que vous receviez votre boisson, les ressources GPU nécessaires pour prendre votre commande de plat principal seront inactives. Avec le calcul asynchrone de DirectX 12, le serveur pourrait prendre votre commande en une seule fois, comme dans une chaîne de restauration rapide. Cela permet de maximiser l’utilisation du GPU et d’améliorer les performances de jeu.
DirectX 12 a également introduit les objets d’état de pipeline (PSO). Avec DirectX 11, lorsque la géométrie d’un jeu est soumise au GPU pour être rendue, divers paramètres matériels sont responsables de l’interprétation et du rendu de ces données. C’est ce qu’on appelle le pipeline graphique et le flux d’entrées et de sorties de données qui se produit lorsque votre GPU effectue le rendu des images. Cependant, le pipeline graphique de DirectX 11 n’est pas parfait.
Ce pipeline contient une collection de différents états, y compris l’état de rastérisation, l’état de mélange et l’état de pochoir de profondeur, parmi d’autres composants. Dans DirectX 11, il existe des dépendances entre ces différents états. Par conséquent, un état ne peut être achevé tant que l’état précédent n’est pas défini. Cela diminue l’utilisation du GPU et augmente la charge de travail du CPU au détriment des performances.
Pour contourner ce problème, DirectX 12 a introduit les PSO, des objets qui décrivent l’état de l’ensemble du pipeline graphique. Les PSO sont comme une bouteille qui contient les différents états et composants nécessaires à la création d’une image. Cela permet au GPU de prétraiter chaque état dépendant au lieu de recalculer continuellement les états basés sur le pipeline graphique actuel.
Cela permet de réduire considérablement la surcharge du processeur que l’on trouve dans DirectX 11 et d’améliorer les performances. Alors, à quoi ressemble cette différence ? Selon Microsoft, DirectX 12 réduit la surcharge du processeur jusqu’à 50 % et améliore les performances du GPU jusqu’à 20 %. Bien qu’il s’agisse d’améliorations substantielles, cela ne signifie pas que vous obtiendrez les mêmes résultats.
Pourquoi le passage de DirectX 11 à DirectX 12 n’est pas simple
DirectX 11 a été lancé pour la première fois pour Windows Vista le 27 octobre 2009. Avec DirectX 12 qui suivra en 2015, il y a donc six ans d’écart entre DirectX 11 et DirectX 12. Pendant cette période, des milliers de jeux ont été développés avec DirectX 11. Malheureusement, le passage de DirectX 11 à DirectX 12 est loin d’être facile.
DirectX 11 est ce qu’on appelle une API de haut niveau. En termes simples, les API de haut niveau sont plus faciles à utiliser pour les développeurs. Il en résulte des jeux stables, soignés et jouables. En revanche, DirectX 12 est une API de bas niveau, différente de DirectX 11. Bien qu’elle permette aux développeurs d’affiner l’optimisation à un niveau granulaire, son utilisation requiert des connaissances approfondies.
Cela étant dit, un jeu développé avec DirectX 12 peut se révéler moins performant en fonction de la connaissance de l’API par le développeur. Certaines améliorations sont apportées par DirectX 12, mais tout dépend de la manière dont le développeur peut les mettre en œuvre. C’est pourquoi de nombreux développeurs choisissent de s’en tenir à des API de haut niveau comme DirectX 11.
DX 11 vs. DX 12 : que choisir ?
La réponse dépend de plusieurs facteurs, comme le jeu que vous essayez de faire tourner. Par exemple, Guild Wars 2 fonctionne avec DirectX 11. Même si votre système d’exploitation et votre matériel peuvent utiliser DirectX 12, vous n’aurez pas la possibilité de sélectionner DirectX 11 dans Guild Wars 2, car le jeu ne le prend pas en charge. Cette décision revient entièrement au développeur, ArenaNet.
Crédit photo : Martin Kerstein/Guild Wars 2
Croyez-le ou non, il a fallu neuf ans à ArenaNet pour passer de DirectX 9 à DirectX 11. Cependant, certains jeux prennent en charge à la fois DirectX 11 et DirectX 12, notamment Fortnite (lisez notre antisèche sur Fortnite), Battlefield 5, Shadow of the Tomb Raider, et bien d’autres encore. Les utilisateurs peuvent basculer entre DirectX 11 et DirectX 12 dans les paramètres du jeu.
Le fait que certains jeux prennent en charge à la fois DirectX 11 et 12 vous a probablement amené à vous interroger sur les performances en jeu. Le choix de DX 11 ou DX 12 permet-il d’obtenir de meilleures performances dans le jeu ? La vidéo suivante illustre les différences entre DirectX 11 et DirectX 12 dans une série de jeux, en présentant des spécifications essentielles telles que le nombre moyen d’images par seconde, l’utilisation du CPU, l’utilisation du GPU, et plus encore, en utilisant un AMD Ryzen 3600, un Nvidia GeForce RTX 3060 Ti, et 16 Go de RAM DDR4.
Les résultats sont surprenants à bien des égards, avec parfois peu de différences visuelles entre DX 11 et DX 12, malgré les nombreuses années qui séparent leurs lancements. Vous avez peut-être également noté les différences de charge du GPU et du CPU entre les deux versions de DirectX, les versions DX 12 de chaque jeu nécessitant généralement moins de ressources que l’ancienne version DX 11.
Outre la prise en charge des jeux, le choix entre DirectX 11 et DirectX 12 dépend également de votre matériel. Pratiquement tous les GPU modernes prendront en charge DirectX 12, mais il n’en va pas de même pour les GPU plus anciens tels que la Radeon HD 4870. Sorti en 2008, ce GPU ne prend en charge que DirectX 10, ce qui signifie qu’il serait incapable de faire tourner la plupart des jeux modernes, qui utilisent DirectX 11 et DirectX 12.
DirectX 12 est-il le bon choix pour vous ?
En fin de compte, le passage de DirectX 11 à DirectX 12 n’est pas aussi noir ou blanc qu’il n’y paraît. Cela dépend d’une série de facteurs tels que le matériel, les logiciels, le système d’exploitation et le fait qu’un jeu prenne ou non en charge les deux versions. Tous ces éléments doivent être pris en compte avant de prendre une décision, et il en sera probablement de même pour les futures générations de DirectX.
Améliorez votre QI technologique grâce à nos lettres d’information gratuites
En vous abonnant, vous acceptez notre politique de confidentialité et pouvez recevoir des communications occasionnelles ; vous pouvez vous désabonner à tout moment.