DX12, ce qu’en pense les connaisseurs
Microsoft le dit, DX12 est une nouvelle technologie qui va tout changer quand il va être lancé avec Windows 10. Microsoft l’a promis et comme nous le montre cet article sur les performances de DX12, il apporte un gain de performance de 50% par rapporte à son ancien collègue DX11. DX12 est vendu comme, la technologie qui va tout révolutionner, par les responsables marketing. La question est: qu’est-ce qu’il va vraiment apporter entre ce qui est dit et la réalité? Des développeurs, ingénieurs et scientifiques commencent à donner des réponses, ce qu’ils pensent du nouveau DX12 et l’impact qu’il va avoir sur la sphère PC. Ce que va vraiment apporter DX12 reste quand même assez flou. Si l’on demande aux gens: que va apporter DX12? La réponse qu’on obtiendra majoritairement est qu’il va apporter des gains de performances. Mais la triste réalité c’est que DX12 ne va rien apporter de transcendant et d’immédiat à sa sortie. Le Professeur Morgan McGuire de Williams College, un consultant de l’industrie informatique et co-auteur de “Computer Graphics: Principles & Practice” explique que :
“nous allons rapidement voir quelques petites améliorations concernant un petit nombre de jeux, mais DX12 ne va pas tout améliorer d’un coup de baguette magique – c’est essentiellement une technologie pour les développeurs et non pour les consommateurs. Nous allons commencer à voir son impact lors des deux prochaines années quand des jeux seront conçus avec DX12 (sous entendu, pas à sa sortie, mais plus sur le long terme).”
C’est un point important à propos de DX12 : les avantages qu’il apporte, il les apporte aux développeurs. Un programmeur de Gaslamp Games, Nicholas Vining, a déclaré que :
“en général, dès que l’équipe de programmeurs obtient un jeu qui tourne à 60 FPS, l’équipe de conception artistique va vouloir le réduire à 30 FPS. Cependant, beaucoup de développeurs pensent tout de même qu’il y un gain réel et des choses à faire avec DX12 car il interagit mieux avec le matériel.”
Depuis quelques années et selon McGuire, le GPU est ralenti artificiellement par le CPU et le système d’exploitation.
“Les deux processeurs fonctionnent de manière totalement indépendantes. Chaque fois que le CPU et le GPU communiquent, ils doivent se synchroniser. Ce processus prend un peu de temps et nécessite que l’un d’entre eux ralentisse temporairement. Ainsi, chaque fois que le CPU indique au GPU de dessiner quelque chose, le GPU doit ralentir le temps de recevoir les instructions.”
Problème dans la gestion des informations.
Essayons d’imager la façon dont fonctionnent les graphismes dans les anciennes versions de DirectX. DirectX, dans l’exemple, est un agent qui contrôle la circulation au milieu d’une intersection où convergent 4 routes. Toutes les voitures qui arrivent à cette intersection transportent énormément d’informations. Les informations venant de la mémoire système (RAM) doivent aller dans le cache du CPU. La carte graphique a besoin des informations du CPU. La carte en elle-même traite aussi beaucoup d’informations. Et, bien sûr, le CPU gère également un jeu entier qui est en train de changer, ce qui signifie qu’il doit prendre des informations et les envoyer au GPU, qui lui aussi subit des changements. Et en plus de tout cela, tout ces informations circulent à différentes vitesses étant donné que, dans l’écosystème de Windows, vous ne savez pas exactement les chemins que prennent les informations car il y a pléthore de configurations matérielles différentes. DirectX joue donc le rôle d’agent de la circulation au milieu de tout ça. Son rôle est de gérer de façon autonome toutes les données que les ingénieurs font transiter par ces routes. Le problème, c’est que des goulets d’étranglement se forment continuellement, et l’information doit ainsi attendre que l’intersection se libère. Toutes ces inefficacités, ajoutées les unes après les autres, attaquent la performance. La plupart de ces inefficacités affectent le GPU, qui est étranglé par les autres composants du PC. Pendant longtemps, c’était un compromis acceptable, car il était à la fois facile à mettre en œuvre et parce que les vitesses des différents composants ne variaient pas beaucoup. Mais ce n’est plus le cas : le GPU est constamment en train d’attendre le CPU, qui est à son tour en attente de la mémoire, augmentant ainsi le montant de performance sacrifiée. C’est d’ailleurs pourquoi les consoles sont capables de suivre les PC alors qu’il y a un fossé massif en terme de capacités de leur hardware. Le fait que le hardware n’évolue pas sur console a permis au développeur d’écrire des codes qui parlent directement au matériel, sans la surcharge de gestion de DirectX. Les consoles peuvent avoir de plus minces API (application-program interfaces) car elles n’ont pas une fonction aussi importante que pour les PC. Sur les consoles, vous savez à quoi est destiné le matériel, et certaines API sont très spécifiques. Vous savez à 100% et pour chaque puce à quoi vous attendre et c’est un avantage considérable quand vous créez une API. Avec DirectX 12, la gestion du hardware sera plus efficace mais au prix d’une grand complexité dans le développement. DX12 et la prochaine API OpenGL vont permettre au processeur de communiquer avec le GPU de manière plus fine. Ils sont en fait plus simples que DX11, afin de permettre aux développeurs d’accéder de façon plus directe au GPU. Un programmeur explique que dans les anciennes versions de DirectX,
vous aviez des couches qui vérifiaient les données pour vous, vous pouviez ainsi faire une erreur et en avoir des retours.
Avec DX11, comme expliqué dans le paragraphe précédent :
“vous aviez une intersection qui vérifiait tout en permanence avant ralentissement à la clé. Maintenant, avec DX12, l’intersection se transforme en rond point où les informations circulent en permanence avec moins d’interruptions. Maintenant que vous avez accès à tout plus directement, vous avez plus de responsabilités et si vous commettez une erreur, un problème de transfert d’informations survient. DX11 gérait beaucoup de détails et il était surchargé alors qu’aujourd’hui DX12 met plus de responsabilité dans les mains du programmeur qui doit configurer sa propre mémoire, faire la synchronisation CPU–GPU et a ainsi, de manière générale, plus de raisons de se tirer une balle dans le pied.”
Ce changement prendra du temps. Pour les développeurs multi-plateformes, ce n’est cependant pas un problème, ces derniers écrivant du code gérant ces subtilités depuis des années puisque les disparités entre consoles étaient véritablement énormes pour les premières versions de DirectX. C’est pourquoi Microsoft peut imposer ce changement maintenant : après des années d’expérience dans le développement sur console, l’arrivée d’alternatives à DirectX (comme Mantle qui emploie aussi des APIs base niveau type console), le changement à opérer n’est plus aussi radical qu’il le fût. Cependant, il reste la question de la scène gaming PC. De manière globale, DX12 va apporter un gain de performance mais il lui reste beaucoup de travail car chaque PC est différent, au contraire des consoles qui possèdent toutes le même hardware. D’un PC à un autre, vous pouvez avoir telle ou telle pièce qui change, un système d’exploitation différent, etc.. Le marché du PC est, comme toujours, profondément fragmenté entre différents types de matériels et systèmes d’exploitation.
“Vous ne transférerez vers le support de DX12 que des ressources proportionnelles à la taille du marché”, déclare l’un des développeurs. “Imaginons que la moitié de vos clients potentiels est toujours sur DX11 – puisque vous êtes ainsi dans l’obligation tourner proprement sur DX11 de toute façon, vous n’allez probablement pas profiter de tout ce que DX12 a à vous offrir.”
C’est important de dire que ces limitations ne signifient pas que DX12 n’apporte aucun bénéfice, mais plutôt que ces bénéfices ne seront pas commensurables avec ce qui est actuellement possible sous DirectX. Les éléments faciles à améliorer pour DirectX 12 (pensez aux distances d’affichage) seront améliorés. Mais beaucoup d’autres choses resteront limitées par ce qui est possible avec DX11. Avec Windows 10, Microsoft fait quelque chose de très intelligent : ils offrent une upgrade gratuite vers Windows 10 pour la première année de sa sortie. Ça risque de prendre pas mal de temps pour ameuter la majorité d’utilisateurs dont DX12 a besoin (sous-entendu pour le tester) Si Windows 10 est sûrement promis au succès, il ne va pas résoudre le problème selon Gaslam Vining. Récemment, la fragmentation se décompose comme suit : la version de DirectX (9 versus 10 versus 11). Mais la question est:
“qu’est-ce que votre carte graphique supporte ?” Beaucoup de fragmentation est actuellement cachée à l’utilisateur, mais pas au développeur, qui doit suer à grosses gouttes pour assurer une bonne expérience, hors des sentiers battus, pour des machines dont l’âge fluctue entre 5 et 7 ans, avec des pilotes généralement dépassés.”
Si toutefois les gains sont bel et bien au rendez-vous, des sources indiquent que cela va encourager les développeurs à utiliser des moteurs graphiques sous licence. Car si DX12 va submerger les petits développeurs, qui sont bien souvent déjà soucieux de faire fonctionner un jeu en plus d’optimiser un moteur, les détenteurs des licences de moteurs graphiques peuvent injecter le travail nécessaire à une optimisation pour DX12 au même titre qu’une quantité de normes concurrentes.
Conclusion.
Au final, si DirectX 12 apportera probablement quelques améliorations à sa sortie en tant qu’élément de Windows 10, le paysage du PC en lui-même est trop fragmenté et l’inertie des pratiques actuelles est trop forte pour espérer une évolution du jour au lendemain. Dans ce cas, ce qu’on pourrait retenir de DirectX 12, c’est le transfert continuel vers des APIs plus légères et de moindre niveau qui ressemble plus fidèlement à l’environnement graphique des consoles. Alors que Mantle et DirectX poussent la programmation graphique dans la même direction, les processeurs graphiques sont sur la bonne voie pour devenir plus efficaces via ces APIs, certes plus exigeantes, mais aussi plus efficaces.
“C’est ironique,” a déclaré un ingénieur, “d’une certaine manière, je pense que ça va agrandir le fossé entre ce dont les jeux PC sont capables par rapport aux versions consoles.”
Merci à <a href=’http://www.warlegend.net/members/Dryft/’ rel="nofollow">@Dryft</a> et <a href=’http://www.warlegend.net/members/superwho/’ rel="nofollow">@superwho</a> pour leur aide précieuse
:’)
:) anytime
Très intéressant, thx ;)
C’est surtout que le problème c’est malgré que le support DirectX 12 est présent sur toutes les cartes AMD HD 7000 et plus et toutes les cartes Nvidia GTX 600 et plus ça fait encore pas assez de monde pour sortir des jeux DirectX 12 only malheureusement.
Pour le gain de performances ça peut aller d’à peine quelques % à +2000% en fonction des situations.
Par contre c’est faux il y aura pas que des gains CPU. DirectX 12 permettra pour la première fois sur des jeux à traiter des tâches en concomitance sur la carte graphique. Acutuelement nos GPU font toutes les tâches de rendu 1 à 1 le plus vite possible et certaines tâches demandes que certains ressources très spécifiques à la carte graphique.
Selon AMD, bien utilisé et dans un cas pratique on pourrait gagner +20% de performances sur le GPU (en plus des gains CPU) avec les tâches en concomitance.
Le benchmark sur 3D mark est déjà dispo pour comparer DX11/Mantle à DX12,k reste à attendre la sortie de windows 10.
merci de l’info tres interressant.
J’attends de voir car leur 50% de gain de perf par apport à la version précédente c’est limite s’il nous sorte pas ça à chaque fois.
btw nj pour l’article !
merci de l’info :D mais j’attend de voir ce que ça va réellement donner
Pour mon prochain PC peut être en tout cas pour le moment j’ai pas à me plaindre. Si sur leur 50% perf en plus on en gagne ne serait ce que 15% je serai déjà content car la ça sentait les grand flutistes professionnel :)
L’informatique va dans la bonne direction, windows 10 gratuit (pendant quelques temps), direct x12 qui va utiliser plus de core (car la actuellement dans les jeux avoir un i5 4 core, ou un i7 X à 8 core, ca ne change rien)
Par contre les jeux ne seront pas automatiquement compatibles, dans tous les cas ce sera aux devs de chaque jeu de bien utiliser la techno.
Si on ajoute les nouveaux processeur intel Skylake, les nouvelles cartes graphiques amd radeon (390x); et la riposte de nvidia (980 ti?), la rentrée 2015 va être intéressante ! On peut déjà dire que Septembre sera une bonne date pour se refaire une config prenant en compte tout ça :)
A voir, c’est vrai qu’un I7 pour les jeux ne sert pas a grand chose a l’heure actuelle, si DX12 peut permettre une pleine utilisation de notre matériel. A voir.
Article vraiment très intéressant.
J’ai un AMD FX et je ne serai pas fâché de le voir soulagé pour les gros jeux. Je doute qu’il arrive à suivre ma gtx780.
Concernant les moteurs graphiques, il me semble avoir lu que la bourre que se tirent les moteurs 3D en kit va a priori dans le bon sens, avec notamment Unity et Unreal Engine 4 qui sortent en version gratuite pour débuter. C’est tout bénéf pour les indépendants.