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

Direc­tX 12 sera réservée à Win­dows 10. Elle ne sera pas portée sur les ver­sions précé­dentes, Win­dows 8.1, 8 ou 7. Ceci à cause d’une refonte du mod­èle de pilote graphique WDDM (qui passe en ver­sion 2.0) et qui fait par­tie inté­grante du noy­au Win­dows. Le porter serait une procé­dure très lourde. Et prob­a­ble­ment que Microsoft compte faire le forc­ing pour qu’on installe son nou­veau sys­tème… pfff! C’est rangeant. Mais pas­sons sur  ce point car les évo­lu­tions restent impor­tantes et Win­dows 10 sera bel et bien gra­tu­it pour les util­isa­teurs d’un Win­dows précé­dent (à par­tir de la 7).

Lors de la Game Devel­op­ers Con­fer­ence 2015, Phil Spencer, le patron de la divi­sion Xbox, a promis une aug­men­ta­tion des per­for­mances de l’ordre de 20% sur PC suite à l’arrivée de cet nou­velle API.  Preuve en est, le blog de Direc­tX révèle que 3DMark note une amélio­ra­tion de l’utilisation du CPU de l’ordre de 50%, tout en repous­sant les lim­ites du par­al­lélisme sup­porté par Direc­tX:

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

Direc­tX 12 offre pour ce faire un accès plus direct, plus bas niveau, aux com­posants matériels, ce qui dis­pense de coû­teuses trans­ac­tions avec le CPU.

Une démon­stra­tion a notam­ment été réal­isée lors de la GDC sur le jeu Lion­head qui tourne sous Unre­al Engine 4:

Direc­tX 12 est effec­tive­ment l’équivalent chez Microsoft de Man­tle chez AMD. Si ce n’est que con­traire­ment à cette dernière, l’API de Microsoft est interopérable, elle peut fonc­tion­ner avec n’importe quelle carte graphique. Cette nou­velle API fonc­tionne 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 con­séquent de 150%:

Quelles cartes vont sup­port­er Direc­tX 12 ? Chez ATI/AMD, les Radeon 7000 et 200, les 260 et 290, et les 285, respec­tive­ment. Chez Nvidia ce sera le cas de toutes les Fer­mi, Kepler et Maxwell, c’est-à-dire des 400 et 500, des 600 et 700, puis des 750 et 900, respec­tive­ment.

Et con­cer­nant le mul­ti-cartes ? Un mes­sage en prove­nance de Microsoft et pub­lié sur le site LinusTechTips mon­tre que Direct X12 per­me­t­tra d’utiliser plusieurs cartes graphiques en même temps et en prove­nance de dif­férents con­struc­teurs. Il sera ain­si pos­si­ble d’utiliser une puce AMD et une puce NVIDIA en même temps et sans que cela pose prob­lème, en principe.

Se pose aus­si la ques­tion des gains con­cer­nant la Xbox One, dont le GPU est annon­cé comme com­pat­i­ble Direc­tX 12. Les amélio­ra­tions seront-elles nota­bles en ter­mes de réso­lu­tion d’affichage et de fram­er­ate ? A pri­ori, non !

Quelques nou­veautés:

  • Vol­ume Tiled Resources (VTR): Par­ti­c­ulière­ment utile pour les vox­els (vol­u­met­ric pix­els), les tex­tures 3D sont découpées en “tiles” (tuiles) — seules les tuiles utiles seront chargées en mémoire, per­me­t­tant ain­si un gain impor­tant de mémoire et de temps de charge­ment.

VTR_575px

  • Typed UAV LoadUnordered Access Views (UAVs) est un type spé­ciale de buffer qui per­met à à plusieurs GPU threads d’accéder au même buffer simul­tané­ment sans génér­er de con­flits mémoires. A cause de cette nature d’UAVs, cer­taines restric­tions ont été mis­es en place et implé­men­tées sous le “Typed UAV Load” (les UAVs sont typés)

D3DUAV_575px

  • Con­ser­v­a­tive Ras­ter­i­za­tion: A la place d’utiliser un rapi­de et sim­ple test pour voir si le cen­tre du pix­el est entouré par les lignes du poy­gone, la “con­ser­v­a­tive Ras­ter­i­za­tion” va véri­fi­er si le pix­el ne recou­vre pas le poly­gone, per­me­t­tant ain­si de gér­er les cas où le poly­gone est si petit que le test précé­dent ne fonc­tion­nait pas. Cela per­met entre autres une meilleure ges­tion des col­li­sions et du culling.

D3DCR_575px

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

Pour en savoir plus sur l’architecture et le pipeline de Direc­tX 12, vous pou­vez aller sur cette page.

Voici la vidéo de la présen­ta­tion lors de la GDC:

Win­dows 10 devrait être disponible en Automne 2015. Mais notons que la build 9926 de la préver­sion tech­nique de Win­dows 10 intè­gre une ver­sion prélim­i­naire de Direc­tX 12 et le sup­port de nou­veaux pilotes de cartes graphiques via WDDM 2.0 (Win­dows Dis­play Dri­ver Mod­el).

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

Capture d'écran 2015-03-21 16.49.38Bon, pour les résul­tats des tests, on va atten­dre le 26, non?

Capture d'écran 2015-03-21 16.59.36

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.