GDC: DirectX 12: 'Mantle' standardisé en 2015

Publié le 20/03/2014 à 21:47 par
Imprimer

Comme prévu Microsoft vient de lever le voile sur sa future API DirectX 12 ou pour être plus précis sur sa composante graphique Direct3D 12. Lors de la première session consacrée au sujet, Microsoft n'est pas rentré dans le détail et s'est contenté de nous donner les grandes lignes de son API. Des grandes lignes qui correspondent à ce qu'AMD propose avec son API propriétaire Mantle.


Direct3D 12 propose un niveau d'abstraction plus bas que les précédents Direct3D, la responsabilité du contrôle du GPU se retrouve alors en partie transférée de l'API et des pilotes vers l'application et les développeurs. Le premier intérêt est de réduire le surcoût CPU de la gestion des états et du rendu 3D en lui-même. L'API et les pilotes ont moins de vérifications à faire, ce qui réduit la pression au niveau du CPU. Par ailleurs, regrouper une grosse partie du contrôle en un seul endroit, l'application, permet d'enfin exploiter le multithreading de manière efficace. Actuellement, le développeur ne sait pas ce que vont faire de ses commandes le pilote et l'API et il lui est donc impossible de prévoir un multithreading efficace.




Plus spécifiquement, Direct3D 12 va tout d'abord réduire le coût des changements d'états à travers des "pipeline state objects", sorte d'empreinte de l'état du GPU pour un type de tâche particulière. De quoi pouvoir préparer les changements d'états en amont et appliquer ces changements en bloc. Ensuite, Direct3D 12 fait appel au concept de "bundles", des groupes de commandes de rendu liés à un objet particulier de la scène qui, une fois préparés, pourront être stockés en cache et réutilisés autant de fois que les développeurs le jugent nécessaire, que ce soit à l'intérieur d'une même image ou dans des images successives. Direct3D 12 supporte également un nouveau modèle de listes de commandes asynchrones pour faciliter le bon support du multithreading, une gestion des ressources plus flexibles, mieux adaptée aux GPU modernes etc.

Tout cela est très proche voire identique à ce que fait AMD avec Mantle. Oxide Games estime d'ailleurs que les performances de son renderer Direct3D 12 seront similaires à celles de son renderer Mantle.


Direct3D 12 apportera également quelques nouvelles fonctionnalités, mais ce n'est pas l'objectif principal. Sans rentrer dans le détail, Microsoft cite par exemple le support du blending programmable, d'un OIT (order independant transparency) efficace ou encore d'une rastérisation conservative.

Microsoft a tenu à donner un exemple de la différence que peut faire Direct3D 12 en se basant sur 3DMark 11, dont le code lui a été fourni par Futuremark :



D3D11 à gauche, D3D12 à droite

Comme attendu, Direct3D 12 permet de réduire drastiquement le temps CPU qui est réduit par 2 sur la partie graphique. Plus important, le thread principal se retrouve nettement allégé au niveau de l'API et des pilotes (UMD et KMD), cette fois d'un facteur 5x. Un tel exemple met en avant la possibilité d'exploiter mieux de "petits" CPU multicores.


L'autre démonstration de Microsoft concernait le portage de Forza Motorsport de l'API D3D11.X de la Xbox One vers D3D12. Celui-ci aurait été très rapide, l'équivalent du temps de travail de 4 ingénieurs sur un mois.

Ensuite, lors de cette première session consacrée à Direct3D 12, Microsoft a tenu à inclure ses partenaires en les invitant tour à tour à prendre la parole et en organisant une improbable photo de famille de tous ces concurrents :


De gauche à droite, Chris Tector (Forza Motorsport, Microsoft), Anuj Gosalia (Microsoft), Eric Mentzer (Intel), Raja Koduri (AMD), Tony Tamasi (Nvidia), Eric Demers (Qualcomm, ex-ATI/AMD).

Tour à tour et par ordre alphabétiques, chacun a expliqué apprécier avoir travaillé en étroite collaboration avec Microsoft et abordé la question du support de cette future API :

AMD :


Du côté d'AMD, qui a évité de prononcer le mot Mantle durant cette présentation, le support concernera tous les GPU depuis la première génération GCN, soit les Radeon HD 7000 (hors renommages), HD 8000, R200 et supérieures.

Intel :

Intel souligne qu'il s'agit de la plus grosse évolution de ces dernières années. Si Intel a largement profité dans le monde PC de l'inefficacité de Direct3D pour justifier l'utilisation de ses CPU les plus performants, une API plus efficace l'intéresse également puisque cela va permettre de libérer ses GPU lorsque l'enveloppe thermique est limitée. Si les cores CPU peuvent se contenter d'une fréquence plus faible, cela laisse plus de marge pour le turbo du côté GPU. Le support de Direct3D 12 sera assuré pour tous les processeurs Core à partir de la 4ème génération (Haswell).

Nvidia :



Nvidia est probablement le fabricant qui devrait proposer le plus large support de Direct3D 12 pour ses anciens produits puisque cela concernera les générations Fermi, Kepler et Maxwell. De quoi permettre à Nvidia d'estimer qu'à sa sortie, le parc compatible Direct3D 12 sera à 40% composé de GeForce.

Nvidia indique avoir travaillé en étroite collaboration avec Microsoft depuis un an sur Direct3D 12 (la démonstration de Forza Motorsport tournait d'ailleurs sur une GeForce GTX Titan Black), et termine par citer Epic Games, un partenaire proche, qui annonce qu'ils travailleront main dans la main avec le fabricant de GPU pour porter l'Unreal Engine sous DirectX 12.

Qualcomm :

Enfin, Qualcomm explique voire dans Direct3D 12 de nouvelles opportunités d'augmenter le rendement énergétique, la priorité pour le fabricant de SoC. Ce dernier nous avait par ailleurs indiqué précédemment que les GPU Adreno 4xx, tels que l'Adreno 420 présent dans le Snapdragon 805, seraient compatibles avec ce nouveau Direct3D.


Au final, à partir de ce jour, Microsoft estime que tous les nouveaux GPU PC supporteront Direct3D 12, que 80% des nouveaux PC destinés aux joueurs supporteront Direct3D 12 et que 50% des joueurs seront équipés de matériel adapté lorsque l'API sera disponible. La Xbox One sera bien entendu compatible. Microsoft ne donne aucune information par rapport aux niveaux de fonctionnalités matérielles mais il est probable que tous les GPU compatibles Direct3D 12 n'en supportent pas toutes les fonctionnalités.

Malheureusement, il faudra encore patienter un petit peu pour cela. Dans l'immédiat, Microsoft propose un accès à une beta au cas par cas aux développeurs qui en font la demande et prévoit une préversion publique pour la fin de l'année. Le but visé par Microsoft concerne les jeux de Noël 2015, mais pour quel OS ? Un point que le géant de Redmond n'est pas encore prêt à aborder mais il est possible, sur PC, que passer à Windows 9 sera obligatoire pour profiter de DirectX 12 et Direct3D 12. De futures versions de Windows adaptées aux tablettes et aux smartphones profiteront elles aussi de cette API.

D'après le timing de Microsoft, AMD devrait encore disposer d'une fenêtre de plus d'une année pour profiter des avantages de Mantle. Et au vu de la proximité apparente entre les deux API, les développeurs devraient pouvoir réutiliser une grosse partie du travail fait autour de l'API propriétaire d'AMD.

Vos réactions

Top articles