Menü

DirectX12: Dramatische Performance-Steigerungen beim Multi-Threading

Auf der GDC hat Microsoft erste Benchmarks präsentiert, die erhebliche Tempo-Steigerungen auf Mehr-Kern-Systemen zeigen.

vorlesen Drucken Kommentare lesen 234 Beiträge
Anzeige
Microsoft Xbox One (500GB)
Microsoft Xbox One (500GB) ab € 257,57

Für Microsoft und Chip-Hersteller wie AMD, Nvidia oder Intel stehen die Effizienz-Steigerung und der Performance-Gewinn beim Multi-Threading im Mittelpunkt von DirectX 12. "In den vergangenen zehn Jahren haben neue Direct3D-Versionen immer mehr Effekte und Funktionen hinzugefügt, die den Abstand des Programm-Layers von der Hardware vergrößerten", erklärte David Oldcorn, der bei AMD für die DirectX12-Treiber-Entwicklung verantwortlich ist. "Geschwindigkeitssteigerungen rührten nur von der höheren Rechenleistung der Prozessoren her, nicht aber von einer Effizienz-Steigerung der Software. " Das sei eine unerfreuliche Entwicklung.

"Mit DirectX 12 trägt erstmals die Software-Schnittstelle dank ihrer Effizienzsteigerung zum Tempogewinn bei", kündigte Oldcorn den Spiele-Entwicklern auf der Game Developers Conference in San Francisco an. Neue aufwendige Grafik-Effekte würden bei DirectX 12 wenn überhaupt nur eine sehr untergeordnete Rolle spielen – performance is king.

Bislang verteile DirectX die Rechenlast mehrerer Threads schlecht. Die Hauptarbeit leistet ein Haupt-Thread, die übrigen seien schlecht ausgelastet. DirectX 12 verteilt die Rechenlast wesentlich effizienter, sodass alle Threads gleich ausgelastet werden. Das skaliere wunderbar linear, der Overhead sei deutlich reduziert worden.

DirectX 12 Performance (6 Bilder)

AMD fasste die wichtigsten Architektur-Optimierungen von DirectX 12 zusammen.

Zum Beweis ließ Max McMullen von Microsoft eine Vorabversion des 3DMarks laufen. Unter DirectX 11 war die Verteilung der Rechenlast auf den vier Threads sehr ungleich verteilt, der erste Thread brauchte deutlich mehr Zeit als die übrigen. Unter DirectX 12 glichen sich die Rechenzeiten der Threads nahezu an. In der Summe erledigten sie die Berechnungen auf der gleichen Hardware um fast 50 Prozent schneller als unter DirectX 11. Derart dramatische Performance-Gewinne können Entwickler nutzen, um die nötigen Berechnungen stärker zu parallelisieren. Sie könnten so mehr Details darstellen oder die Framerate verbessern. Ihre Programme bekommen einen wesentlich direkteren Zugriff auf die Grafik-Hardware. Sie können ähnlich wie in einer Spielkonsole "closer to the metal" arbeiten. So werde das Treibermodell stark entschlackt und vereinfacht, sodass es weniger Anfällig für Fehler wird.

Wegen der besseren Thread-Verteilung und Auslastung und der optimierten Render-Pipeline sei es unter DirectX 12 auch nicht mehr notwendig, mit Double- oder gar Tripple-Buffern zu arbeiten. Frame-Drops seien kaum mehr zu erwarten, weshalb man mit Single-Buffer-Rendering auskomme. Nvidia und AMD erwarten, das die Latenz bei DirectX 12 auf 1,5 Frames sinkt. Das kommt nicht nur Profi-Zockern zugute, auch die sehr latenzanfällige Virtual Reality wird von DirectX 12 profitieren.

Natürlich werden es sich AMD und Nvidia nicht nehmen lassen, Ende 2015, wenn die ersten DirectX-12-Spiele erscheinen, auch neue DirectX-12-Grafikkarten auf den Markt zu bringen. Doch die neue Schnittstellenversion läuft auch auf DirectX-11-GPUs, die ebenfalls von den Multi-Thread-Optimierungen profitieren. So soll Microsofts Xbox One, die auf DirectX-11-Hardware beruht, ebenso vom Umstieg auf DirectX 12 profitieren wie die bereits auf dem Markt befindlichen DirectX-11-Grafikkarten.

Für die Unterstützung der alten Hardware machte sich auch Electronic Arts stark, die den Performance-Gewinn für ihre Frostbyte-Engine nutzen wollen. Sie forderten Microsoft auf, DirectX 12 auch unter Windows 7 zu unterstützen, weil dieses System bei vielen Spielern vorhanden sei. Würde Windows 7 ausgeschlossen, müssten die Spiele-Entwickler über Jahre zweigleisig fahren und weiterhin neben DirectX 12 auch DirectX 11 unterstützen. Diesen Mehraufwand wollen die Spiele-Entwickler nur zu gern vermeiden. (hag)