Mit der baldigen Veröffentlichung von Windows 10 rückt auch die dazugehörige Grafik-API mehr und mehr in den Fokus. Noch immer aber herrscht bei den meisten Anwendern große Verwirrung darüber, welche Hardware nun welches Level an Unterstützung bieten wird, denn wieder einmal wird es hier mehrere Stufen geben. Diese sprechen unterschiedliche Ebene an Unterstützung von Hard- und Software an, auf die wir nun etwas genauer eingehen wollen.

Die meisten aktuellen Grafikkarten, egal ob von AMD oder NVIDIA, unterstützen DirectX 12 bereits. Hier geht es aber nur um das unterste Level an Unterstützung und gerade erst definierte Technologien können noch nicht von GPUs voll angesprochen werden, die bereits vor drei Jahren auf den Markt kamen. Auch dazu wollen wir etwas Licht uns Dunkel bringen.

Neue DirectX-12-Technologien



DirectX 12 API

Zunächst einmal wird es die DirectX-12-API geben. Ein wesentlicher Bestandteil der API ist der geringere Overhead, aus dem auch andere Low-Level-APIs wie beispielsweise Mantle ihre Vorteile ziehen. Es geht dabei weniger darum neue Technologien einzuführen, als vielmehr die zur Verfügung stehenden Ressourcen besser zu nutzen. Erste Tests unter Windows 10 haben bereits gezeigt, welches Potenzial vorhanden ist. Allerdings beschränkten sich die bisherigen Tests auf bestimmten Szenarien und es ist noch unklar, welche Leistungszugewinne durch den geringeren Overhead insgesamt zu erwarten sind.

Zum untersten Level der DirectX-12-API gehören auch weitaus tiefergreifende Möglichkeiten durch die Programmierer direkten Zugriff auf die Hardware zu erlangen. Dazu gehört auch ein verbessertes Management des Grafikspeichers. Solch möglicherweise effizientere Möglichkeiten und eine höhere Flexibilität lassen aber auch mehr Raum für Fehler.

Asynchronous Compute ist ebenfalls Bestandteil des niedrigsten Levels an Unterstützung und erlaubt eine bessere und effizientere Nutzung der in festen Arbeitsschritten und Zeitabläufen festgelegten Rendering-Prozesse. So sollen sich mehr und mehr Befehle und Arbeitsschritte unabhängig voneinander abarbeiten lassen. Die verkürzte Renderzeit äußert sich natürlich in höheren Frames pro Sekunde und reduziert auch die Latenzen, was in einigen Bereichen wie den VR-Brillen ebenfalls einen positiven Aspekt darstellt.

DirectX 12_0

Nur GPUs bzw. Architekturen, die explizit auf die Unterstützung von DirectX 12 ausgelegt sind, werden auch das Feature-Level DirectX 12_0 unterstützen, welches auch einige neue Technologien enthält. Dazu gehören unter anderem die Tiled Resources. Sie sind ein Typ der bereits bekannten Tiled Resources aus DirectX 11, die sowohl für eine hohe Effizienz bei der Nutzung des Speichers sorgen aber auch deren Detailgrad verbessern sollen. Durch die Nutzung einer kleineren Textur in mehreren Ausrichtungen können größere Texturen simuliert werden. Eingespart wird natürlich der Speicherbedarf. Darunter nicht leiden soll allerdings die Darstellungsqualität.

In einem Beispiel wird eine klassische Texture 3D in DirectX 11 mit 1.200 x 600 x 600 Pixel genannt, die bei 32 Bit Farbtiefe auf eine Größe von 1,6 GB kommt. Bei gleicher Texturqualität kommt eine Tiled Texture 3D auf 32 x 32 x 16 Pixel mit 32 Bit Farbtiefe auf 156 MB und wird einfach mehrfach verwendet. In einem Beispiel war eine Renderszene zu sehen, in der dieses Tiled Volume 2.500 mal verwendet werden konnte. Zum Aufbau und der Simulation bestimmter Materialien wird dieser 3D-Textur ein weiterer Informationswert gegeben. Dieser kann beispielsweise ein Transparenzwert oder eine Angabe über die Viskosität sein. Damit lassen sich dann Gase und Flüssigkeiten besser darstellen.

Eine weitere Ausbaustufe der Tildes Resources sind die Volume Tiles Resources, die eine 3D-Textur darstellen und schon gar nicht mehr zum Feature-Level DirectX 12_0 sondern bereits zu 12_1 gehören.

Neue DirectX-12-Technologien

Ebenfalls im Rahmen von DirectX 12_0 genant werden Typed UAV sowie ein neues Bind Model, welches die API auf die größeren Anzahl an CPU-Kernen sowie der größeren Performance bzw. breiteren Parallelisierung vorbereitet. Beides haben wir ausführlich im Launch-Artikel zur GeForce GTX 980 und GTX 970 beschrieben.

DirectX 12_1

Noch einen Schritt weiter gehen Microsoft und die Hersteller mit DirectX 12_1. Nur noch die allerneusten GPUs wurden dieses Feature-Level unterstützen können. Dazu gehören zumindest alle GPUs auf Basis der 2. Generation von "Mawell". Conservative Rasterization ist eine dieser Technologien. Sie kommt z.B. beim Filter von Dynamic Super Resolution und auch beim Multiframe Sampled Anti-Aliasing zum Einsatz.

Neue DirectX-12-Technologien

Beim Rasterizing eines kleinen Objekts/Pixels werden diese durch eine bessere Positionierung der Sample-Punkte besser bzw. überhaupt erst abgedeckt und damit erkannt. Ebenfalls eine Rolle spielt die Conservative Rasterization bei der Voxelization von VXGI. Im Falle einer Berechnung eines Schattens wird die verbesserte Methodik am deutlichsten.

Unterstützung durch die Hardware

Interessant ist natürlich die Frage nach den GPUs oder Grafikkarten, die DirectX 12 in welcher Form genau unterstützen werden und hier kommen wir auch gleich den ersten Einschränkungen- Auch wenn beide Hersteller, also sowohl AMD als auch NVIDIA seit einigen Jahren von einer Unterstützung von DirectX 12 sprechen, so ist diese nur sehr eingeschränkt vorhanden.

DirectX-12-Unterstützung aktueller Hardware GPU-Architektur DirectX 12 API DirectX 12_0 DirectX 12_1 DirectX "12_2" NVIDIA "Maxwell" 2. Generation Ja Ja Ja Ja NVIDIA "Maxwell" 1. Generation Ja Nein Nein Nein NVIDIA Kepler Ja Nein Nein Nein NVIDIA Fermi Ja Nein Nein Nein AMD GCN 1.2 Ja - - - AMD GCN 1.1 Ja - - - AMD GCN 1.0 Ja - - -

Zumindest auf Seiten NVIDIAs bringt die Präsentation der GeForce GTX 980 Ti etwas Licht ins Dunkel. Einzig die Karten der 2. Generation der "Maxwell"-Architektur werden alle bisher genannten Feature-Level und Technologien unterstützen. Dies wären die GeForce GTX Titan X, GTX 980 Ti, GTX 980, GTX 970 und GTX 960. Alle älteren Karten, bis GeForce-500-Serie mit "Fermi"-GPU sind zumindest in der Lage die DirectX 12 API anzusprechen und profitieren von einigen Schlankheitskuren der Kommunikation zwischen Treiber, API und Engine.

Leider ist das Bild bei AMD noch nicht ganz so eindeutig. Die "Graphics Core Next"-Architektur ist ebenfalls inzwischen in verschiedenen Ausbaustufen erhältlich. Die als GCN 1.2 bezeichnete Version kommt bei der Radeon R9 285 zum Einsatz und soll in veränderter Form auch bei den neuen "Fiji"-Karten verwendet werden. Auch GCN 1.1 (Radeon-290- und Radeon-260-Serie) und GCN 1.0 (Radeon-200- und Radeon-7000-Serie) sind zu DirectX 12 kompatibel, decken aber auch hier vermutlich nur die unterste Ebene ab. Bisher fehlen von AMD noch die klaren Aussagen zum Thema DirectX 12. Einige Features wie die Synchronous Shaders sollen auf allen GPUs mit "Graphics Core Next"-Architektur funktionieren.

Vermutlich werden wir uns noch etwas gedulden müssen, bis AMD, NVIDIA und auch Intel konkret über die unterstützen Feature-Level sprechen. Zumindest bei NVIDIA scheint die Angelegenheit nun eindeutig zu sein.