DX12 Feature-Level: Frühere Treiber-Updates und Tabellen
Auf dieser Seite
- 1 Update 26.08.2017: Radeon RX Vega 56/64 und Intel HD Graphics
- 2 Update 10.07.2017: Radeon Vega Frontier Edition in der Redaktion
- 3 Update 30.06.2016: Radeon Vega Frontier Edition wohl mit Feature-Level 12_1, neuer Geforce-Treiber bringt Feature-Upgrade für Maxwell und Fermi
- 4 Update 07.09.2016: Nvidia-Treiber verbessert Preemption
- 5 DirectX 12 Feature-Levels im Vergleich
Update 26.08.2017: Radeon RX Vega 56/64 und Intel HD Graphics
Und wieder einmal gibt es Bewegung am Treiber-Markt. AMD hat mit dem 17.8.1 WHQL den ersten offiziell verfügbaren Treiber für die RX-Vega-Gamerkarten herausgebracht. Diese unterstützen wie auch Vega Frontier Edition (s. voriges Update) DirectX 12 mit Feature-Level 12_1 - und zwar mit der umfangreichsten Liste optionaler Features aller verfügbaren Desktop-Karten. Ausgerechnet jedoch die integrierte Grafik in Intels Sky- und Kaby-Lake-Prozessoren kann beziehungsweise unterstützt noch ein ganz klein wenig mehr Features - doch Standard Swizzle 64 kB sollte auch die Radeon nicht vor Probleme stellen. Zudem ist die HD Graphics natürlich absolut kein Konkurrent in Sachen Leistung.
Erstmals wird von der intel-IGP übrigens die programmierbaren Sample-Positionen für D3D12 im (niedrigsten) Tier 1 unterstützt. (D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1). Damit erlaubt es der Treiber, die Sample-Positionen fix für alle Pixel festzulegen. In Tier 2 (dem aktuell spezifizierten Maximum) können bis zu vier verschiedene Positionen in einem 4-Pixel-Quadrat festgelegt werden, die dann über den Viewport oder das Rendertarget wiederholt werden.
Aktuelle AMD-Treiber haben aus unerfindlichen Gründen den Support für FP16-Genauigkeit für Polaris-, Fiji- und vermutlich auch Tonga-Karten (das haben wir aber nicht nachgeprüft) entfernt. Zwar können die genannten Generationen bei FP16-Präzision nicht wie Vega mit doppeltem Durchsatz arbeiten, aber das Format wird nichtsdestotrotz unterstützt und kann helfen, wertvollen Registerplatz zu sparen und so die Performance zu verbessern. Allerdings gibt es unseres Wissens zurzeit noch keine Programme, die das auch nutzen.
| Architektur | AMD GCN 1.2/3rd Gen GCN | AMD GCN 1.3/4th Gen GCN | AMD GCN 1.4/5th Gen GCN | Nvidia Pascal | Nvidia Maxwell (2.0) | Nvidia Maxwell (1.0) | Nvidia Kepler | Nvidia Fermi | Intel Gen9 |
|---|---|---|---|---|---|---|---|---|---|
| Grafikchips (Beispiele) | Fiji, Tonga, Carrizo | Polaris 10, Polaris 11 | Vega 10 | GP102, GP104, GP106 | GM200, 204, 206, 208 | GM107 | GK104, 106, 107, 110 | GF100, 104, 106, 108, 110, 118 | Skylake/ Kaby Lake |
| Grafikkarten (Beispiele) | Radeon R9 Nano, R9 Fury (X), R9 285, R9 380(X) | Radeon RX 480, RX 470, RX 460 | Radeon RX Vega, Vega Frontier Edition | Geforce GTX-1000-Reihe, Titan X (Pascal) | Geforce GTX Titan X, GTX-900-Reihe | GTX-750-Reihe | Geforce GTX Titan (Z, Black), GTX-600/700-Reihe | Geforce GTX-400/500-Reihe | HD Graphics 510 - 680, Iris (Pro) |
| Ausprobiert anhand von … | R9 Nano | RX 480 | Radeon RX Vega 64 | GTX 1070 | GTX 980 | GTX 750 Ti | GTX 780 Ti | GTX 570 | HD Graphics 610 (Pentium G 4560) |
| Treiberversion | 17.8.2 | 17.8.1 WHQL | 17.8.1 WHQL | 385.41 WHQL | 384.76 WHQL | 384.76 WHQL | 384.76 WHQL | 384.76 WHQL | 22.20.16.4729 (15.46.2) |
| Direct-X-API-Support | 12 | 12 | 12 | 12 | 12 | 12 | 12 | 12 | 12 |
| Maximaler Feature-Level | 12_0 | 12_0 | 12_1 | 12_1 | 12_1 | 11_0 | 11_0 | 11_0 | 12_1 |
| Conservative Rasterization | Nicht unterstützt | Nicht unterstützt | Tier 3 | Tier 2 | Tier 1 | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Tier 3 |
| Rasterizer Ordered Views | Nicht unterstützt | Nicht unterstützt | Ja | Ja | Ja | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| Tiled Resources | Tier 2 | Tier 2 | Tier 3 | Tier 3 | Tier 3 | Tier 1 | Tier 1 | Tier 1 | Tier 3 |
| Resource Binding/Heap | Tier 3/Tier 2 | Tier 3/Tier 2 | Tier 3/Tier 2 | Tier 3/Tier 1 | Tier 3/Tier 1 | Tier 3/Tier 1 | Tier 2/Tier 1 | Tier 1/Tier 1 | Tier 3/Tier 2 |
| Cross-Adapter Row Major Texture | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| VP/RT ohne GS-Emulation | Ja | Ja | Ja | Ja | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| PS Specified Stencil Reference | Ja | Ja | Ja | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| Max GPU VM Bits pro Prozess/Ressource | 40/40 | 40/40 | 44/44 | 40/40 | 40/40 | 40/40 | 40/40 | 40/40 | 48/38 |
| Standard Swizzle 64KB | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| Cross-Node-Sharing | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt |
| Minimum Precision | Nur volle Präzision (32 Bit) | Nur volle Präzision (32 Bit) | 16 & 32 Bit | Nur volle Präzision (32 Bit) | Nur volle Präzision (32 Bit) | Nur volle Präzision (32 Bit) | Nur volle Präzision (32 Bit) | Nur volle Präzision (32 Bit) | 16 & 32 Bit |
| Double-Precision Shaders | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
| UMA/Cache Coherent UMA | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | Ja/Ja |
| Sonstiges | |||||||||
| Asynchronous Compute (DX12) | Ja | Ja | Ja | Jein* | Nicht unterstützt* | Nicht unterstützt* | Nicht unterstützt* | Nicht unterstützt* | Nicht unterstützt** |
| Graphics/Compute Preemption | DMA Buffer/DMA Buffer | Primitive/DMA Buffer | Primitive/DMA Buffer | Pixel/Primitive | DMA Buffer/DMA Buffer | DMA Buffer/DMA Buffer | DMA Buffer/DMA Buffer | DMA Buffer/DMA Buffer | Triangle/Pixel |
| Driver Command Lists (DX11) | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja | Ja | Ja | Ja | Ja | Ja |
| Max. Feature-Level in Direct X 11.x | 12_0 | 12_0 | 12_1 | 12_1 | 12_1 | 11_0 | 12_1 | 11_0 | 11_1 |
Allgemein gilt: Je höher ein "Tier", desto besser.
*DX12-Treiber akzeptieren Befehle aus Graphics/Compute-Queue, in der Hardware werden sie jedoch nicht parallelisiert, sondern seriell ausgeführt. Laut Nvidia unterstützt Maxwell 2.0 Asynchronous Compute, "es sei derzeit im Treiber nicht aktiviert". Pascal unterstützt AC durch dynamische Zuweisung einzelner SMs an die Graphics und Compute Queues, jedoch keine Mischbeschickung eines SMs aus beiden Warps. Femi dürfte Multi-Engine nur seriell unterstützen.
** Intels gen9-Grafik unterstützt das Feature in Software, arbeitet aychron angelegte Aufgaben jedoch nur seriell ab.
Update 10.07.2017: Radeon Vega Frontier Edition in der Redaktion
Wir haben nun endlich eine der ersten in Deutschland verkauften Radeon Vega Frontier-Editionen in der Redaktion. Ein erster Test auf den gebotenen DirectX 12 Feature-Level war wie erwartet erfolgreich: Die Radeon Vega Frontier Edition unterstützt FL12_1 und schlägt im Funktionsumfang Nvidias Pascal-Generation. So wird Conservative Rasterization etwa in der höchsten Stufe "Tier 3" geboten und auch beim Resource Heap gibt es eine Stufe mehr als bei Nvidia. 44 Bit Addressraum für VM-Bits werden ebenso geboten wie FP16-Präzision.
Somit aktualisieren wir unsere Feature-Vergleichstabelle, in der die Radeon Vega (FE) nunmehr mit dem bisherigen Feature-König, der integrierten Grafik von Skylake und Kaby Lake, bei den Haupt-Features gleichzieht. Kleinere Unterschiede existieren jedoch noch.
| Architektur | AMD GCN 1.2/3rd Gen GCN | AMD GCN 1.3/4th Gen GCN | AMD GCN 1.4/5th Gen GCN | Nvidia Pascal | Nvidia Maxwell (2.0) | Nvidia Maxwell (1.0) | Nvidia Kepler | Nvidia Fermi | Intel Gen9 |
|---|---|---|---|---|---|---|---|---|---|
| Grafikchips (Beispiele) | Fiji, Tonga, Carrizo | Polaris 10, Polaris 11 | Vega 10 | GP102, GP104, GP106 | GM200, 204, 206, 208 | GM107 | GK104, 106, 107, 110 | GF100, 104, 106, 108, 110, 118 | Skylake |
| Grafikkarten (Beispiele) | Radeon R9 Nano, R9 Fury (X), R9 285, R9 380(X) | Radeon RX 480, RX 470, RX 460 | Radeon Vega Frontier Edition | Geforce GTX-1000-Reihe, Titan X (Pascal) | Geforce GTX Titan X, GTX-900-Reihe | GTX-750-Reihe | Geforce GTX Titan (Z, Black), GTX-600/700-Reihe | Geforce GTX-400/500-Reihe | HD Graphics 510 - 580, Iris (Pro) |
| Ausprobiert anhand von … | Fury X, R9 380X | RX 480 | Radeon Vega Frontier Edition | GTX 1070 | GTX 980 | GTX 750 Ti | GTX 780 Ti | GTX 570 | Core i7-6700K |
| Treiberversion | 16.3.1 | 16.7.3 - 16.8.2 | RPS 17.6 June 27th | 384.76 WHQL | 384.76 WHQL | 384.76 WHQL | 384.76 WHQL | 384.76 WHQL | 15.40.20.64.4404 |
| Direct-X-API-Support | 12 | 12 | 12 | 12 | 12 | 12 | 12 | 12 | 12 |
| Maximaler Feature-Level | 12_0 | 12_0 | 12_1 | 12_1 | 12_1 | 11_0 | 11_0 | 11_0 | 12_1 |
| Conservative Rasterization | Nicht unterstützt | Nicht unterstützt | Tier 3 | Tier 2 | Tier 1 | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Tier 3 |
| Rasterizer Ordered Views | Nicht unterstützt | Nicht unterstützt | Ja | Ja | Ja | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| Tiled Resources | Tier 2 | Tier 2 | Tier 3 | Tier 3 | Tier 3 | Tier 1 | Tier 1 | Tier 1 | Tier 3 |
| Resource Binding/Heap | Tier 3/Tier 2 | Tier 3/Tier 2 | Tier 3/Tier 2 | Tier 3/Tier 1 | Tier 3/Tier 1 | Tier 3/Tier 1 | Tier 2/Tier 1 | Tier 1/Tier 1 | Tier 3/Tier 2 |
| Cross-Adapter Row Major Texture | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| VP/RT ohne GS-Emulation | Ja | Ja | Ja | Ja | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| PS Specified Stencil Reference | Ja | Ja | Ja | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| Max GPU VM Bits pro Prozess/Ressource | 40/36 | 40/40 | 44/44 | 40/40 | 40/40 | 40/40 | 40/40 | 40/40 | 48/38 |
| Standard Swizzle 64KB | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt |
| Cross-Node-Sharing | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt |
| Minimum Precision | 16/32 Bit | 16/32 Bit | 16/32 Bit | Full Precision | Full Precision | Full Precision | Full Precision | Volle Präzision | Volle Präzision**** |
| Double-Precision Shaders | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
| UMA/Cache Coherent UMA | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | Ja/Ja |
| Sonstiges | |||||||||
| Asynchronous Compute (DX12) | Ja | Ja | Ja | Ja*** | Nicht unterstützt*** | Nicht unterstützt*** | Nicht unterstützt*** | Nicht unterstützt*** | Nicht unterstützt |
| Graphics/Compute Preemption | DMA Buffer/DMA Buffer | Primitive/DMA Buffer | Primitive/DMA Buffer | Pixel/Primitive | DMA Buffer/DMA Buffer | DMA Buffer/DMA Buffer | DMA Buffer/DMA Buffer | DMA Buffer/DMA Buffer | Triangle/Pixel |
| Driver Command Lists (DX11) | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja | Ja | Ja/Ja | Ja/Ja | Ja/Ja | Nicht unterstützt |
| Max. Feature-Level in Direct X 11.x | 12_0 | 12_0 | 12_1 | 12_1 | 12_1 | 11_0 | 11_0 | 11_0 | 11_1 |
***DX12-Treiber akzeptieren Befehle aus Graphics/Compute-Queue, in der Hardware werden sie jedoch nicht parallelisiert, sondern seriell ausgeführt. Laut Nvidia unterstützt Maxwell 2.0 Asynchronous Compute, "es sei derzeit im Treiber nicht aktiviert". Pascal unterstützt AC durch dynamische Zuweisung einzelner SMs an die Graphics und Compute Queues, jedoch keine Mischbeschickung eines SMs aus beiden Warps ****Unter 11.3 wird das Feature unterstützt.
Update 30.06.2016: Radeon Vega Frontier Edition wohl mit Feature-Level 12_1, neuer Geforce-Treiber bringt Feature-Upgrade für Maxwell und Fermi
Der gestern anlässlich der Lawbreakers-Beta veröffentlichte Geforce-Treiber 384.76 bringt ein Upgrade des "Resource Bindings" von Tier 2 auf (das höchste) Tier 3 für Pascal- und Maxwell-basierte Geforce-Karten wie die GTX 1000/900-Reihe sowie die GTX 750 und 750 Ti (beide Maxwell 1.0). Bei Kepler (Geforce 600/700) gibt es keine Unterschiede zum alten Treiber, sodass Maxwell 1.0 sich erstmals in Sachen Features ein kleines bisschen absetzen kann.
Premiere für einen öffentlichen Treiber: Nvidia unterstützt mit dem 384.76-Treiber nun auch die DirectX-12-API für Fermi-basierte Geforce-Karten der 400er- und 500er-Reihe. Aufgrund von Hardware-Limitierungen allerdings nur im Feature-Level 11_0 und damit weiterhin deutlich unter dem Niveau, welches AMD seit 2011 mit GCN 1.0 vorgelegt hat.
| Architektur | AMD GCN 1.3/4th Gen GCN | AMD GCN 1.2/3rd Gen GCN | Nvidia Pascal | Nvidia Maxwell (2.0) | Nvidia Maxwell (1.0) | Nvidia Kepler | Nvidia Fermi | Intel Gen9 |
|---|---|---|---|---|---|---|---|---|
| Grafikchips (Beispiele) | Polaris 10, Polaris 11 | Fiji, Tonga, Carrizo | GP102, GP104, GP106 | GM200, 204, 206, 208 | GM107 | GK104, 106, 107, 110 | GF100, 104, 106, 108, 110, 118 | Skylake |
| Grafikkarten (Beispiele) | Radeon RX 480, RX 470, RX 460 | Radeon R9 Nano, R9 Fury (X), R9 285, R9 380(X) | Geforce GTX-1000-Reihe, Titan X (Pascal) | Geforce GTX Titan X, GTX-900-Reihe | GTX-750-Reihe | Geforce GTX Titan (Z, Black), GTX-600/700-Reihe | Geforce GTX-400/500-Reihe | HD Graphics 510 - 580, Iris (Pro) |
| Ausprobiert anhand von … | RX 480 | Fury X, R9 380X | GTX 1070 | GTX 980 | GTX 750 Ti | GTX 780 Ti | GTX 570 | Core i7-6700K |
| Treiberversion | 16.7.3 - 16.8.2 | 16.3.1 | 384.76 | 384.76 | 384.76 WHQL | 384.76 WHQL | 384.76 WHQL | 15.40.20.64.4404 |
| Direct-X-API-Support | 12 | 12 | 12 | 12 | 12 | 12 | 12 | 12 |
| Maximaler Feature-Level | 12_0 | 12_0 | 12_1 | 12_1 | 11_0 | 11_0 | 11_0 | 12_1 |
| Conservative Rasterization | Nicht unterstützt | Nicht unterstützt | Tier 2 | Tier 1 | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Tier 3 |
| Rasterizer Ordered Views | Nicht unterstützt | Nicht unterstützt | Ja | Ja | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| Tiled Resources | Tier 2 | Tier 2 | Tier 3 | Tier 3 | Tier 1 | Tier 1 | Tier 1 | Tier 3 |
| Resource Binding/Heap | Tier 3/Tier 2 | Tier 3/Tier 2 | Tier 3/Tier 1 | Tier 3/Tier 1 | Tier 3/Tier 1 | Tier 2/Tier 1 | Tier 1/Tier 1 | Tier 3/Tier 2 |
| Cross-Adapter Row Major Texture | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| VP/RT ohne GS-Emulation | Ja | Ja | Ja | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| PS Specified Stencil Reference | Ja | Ja | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| Max GPU VM Bits pro Prozess/Ressource | 40/40 | 40/36 | 40/40 | 40/40 | 40/40 | 40/40 | 40/40 | 48/38 |
| Standard Swizzle 64KB | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt |
| Cross-Node-Sharing | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt |
| Minimum Precision | 16/32 Bit | 16/32 Bit | Full Precision | Full Precision | Full Precision | Volle Präzision | Volle Präzision | Volle Präzision**** |
| Double-Precision Shaders | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
| UMA/Cache Coherent UMA | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | Ja/Ja |
| Sonstiges | ||||||||
| Asynchronous Compute (DX12) | Ja | Ja | Ja*** | Nicht unterstützt*** | Nicht unterstützt*** | Nicht unterstützt*** | Nicht unterstützt*** | Nicht unterstützt |
| Graphics/Compute Preemption | Primitive/DMA Buffer | DMA Buffer/DMA Buffer | Pixel/Primitive | DMA Buffer/DMA Buffer | DMA Buffer/DMA Buffer | DMA Buffer/DMA Buffer | DMA Buffer/DMA Buffer | Triangle/Pixel |
| Driver Command Lists (DX11) | Nicht unterstützt | Nicht unterstützt | Ja | Ja | Ja/Ja | Ja/Ja | Ja/Ja | Nicht unterstützt |
| Max. Feature-Level in Direct X 11.x | 12_0 | 12_0 | 12_1 | 12_1 | 11_0 | 11_0 | 11_0 | 11_1 |
***DX12-Treiber akzeptieren Befehle aus Graphics/Compute-Queue, in der Hardware werden sie jedoch nicht parallelisiert, sondern seriell ausgeführt. Laut Nvidia unterstützt Maxwell 2.0 Asynchronous Compute, "es sei derzeit im Treiber nicht aktiviert". Pascal unterstützt AC durch dynamische Zuweisung einzelner SMs an die Graphics und Compute Queues, jedoch keine Mischbeschickung eines SMs aus beiden Warps ****Unter 11.3 wird das Feature unterstützt.
Erste Tests von Dritten mit der neuen Radeon Vega Frontier-Edition haben gezeigt, dass die Karte ebenfalls DirectX 12 Feature-Level 12_1 mit allen wichtigen Merkmalen in höchster Ausprägung unterstützt.
Wir haben unsere Tabelle mit den entsprechenden Geforce-Daten aktualisiert, warten derzeit noch auf eine Radeon Vega Frontier Edition oder entsprechende RX Vega für Spieler, um auch diese mit in den Vergleich aufnehmen zu können. Weder konnte AMD uns bislang eine Karte zur Verfügung stellen, noch waren passende Modelle in deutschen Online-Shops am Lager.
Update 07.09.2016: Nvidia-Treiber verbessert Preemption
Der aktuelle Nvidia-Treiber 372.70 WHQL bietet (wie auch einige seiner Vorgänger, 372.54/369.05) eine verbesserte Preemption-Granularität - allerdings nur in Verbindung mit dem Windows 10 Anniversary Update, auch als Redstone oder schlicht 1607 bekannt. Weder Maxwell, noch Pascal-Karten unter dem alten Windows 10 Threshold 2 (1511) kommen trotz derselben Treiber in den Genuss dieser Verbesserung.
Diese von Nvidia schon zum Pascal-Launch angekündigte Möglichkeit sorgt für schnellere Umschaltzeiten zum Beispiel zwischen verschiedenen Kommandoströmen oder -gruppen. Für Compute sind geometrische Primitive zumindest bei Nvidia das neue Maß der Dinge. Im Grafikbereich schlägt Nvidia den bisherigen Spitzenreiter Intel Gen9 (Skylake-IGP, s. aktualisierteTabelle unten) mit Pixel-feiner Umschaltzeit. Ein erster kurzer Test unter Windows 10 1607 mit der Titan X (Pascal) und dem 3D Mark Time Spy förderte Interessantes zutage. Zwischen an- und abgeschaltetem Async Compute lagen nurmehr 6,4 respektive 7,9 Prozent Unterschied in den beiden Graphic Tests; während zuvor (unter Win10_1511 mit DMA-Buffer-Preemption-Granularität) noch 9,6 respektive 10,8 Prozent Abstand herrschten. Die Karte gewinnt nunmehr also weniger durch Asynchronous Compute, wie es vom 3DMark Time Spy eingesetzt wird. Denkbar ist, dass das schnellere Umschalten (Preemption) zwischen Graphics- und Compute-Queue nun auch im "nicht-asynchronen Modus" weniger Zeit in Anspruch nimmt.
Ob diese Ergebnis repräsentativ für andere Anwendungen oder gar Spiele ist, können wir derzeit noch nicht sagen, sind aber an einer näheren Untersuchung dran.
Wir haben zwei solcher Dinge ausgemacht, welche es seit dem Launch von Pascal und Polaris in die heute aktuellen Treiber RSCE 16.8.2 Hotfix und den Geforce 372.54 WQHL geschafft haben. Genauer gesagt schaffte es die Primitive-Level Graphics-Preemption bei AMD bereits beim Update vom 16.7.2 auf den 16.7.3.
Quelle: PC Games Hardware
RSCE 16.7.3 Windows 10 TH2
Da wäre zum einen die Preemption-Granularity der Graphics-Queue bei Polaris-GPUs, welche von DMA-Buffer auf Primitive geschrumpft ist. In der Praxis bedeutet dies vereinfacht gesagt, dass bei einem Wechsel des aktuellen Arbeitsauftrags nun nicht mehr gewartet werden muss, bis der komplette DMA-Buffer (bei Grafik-Aufgaben auch bekannt als Draw Call) samt aller Kommandos abgearbeitet werden muss, bevor zu einem anderen Task gewechselt werden kann. Das ist zum Beispiel für Virtual Reality interessant, wenn eine Aufgabe von hoher Priorität (wie etwa das Postprocessing) zwischengeschoben werden muss, damit zum Beispiel ein Bild rechtzeitig für den VSync-Refresh von 90 Hz fertig wird. Eine feinere Preemption-Granularität kann aber auch die Auslastung der Einheiten verbessern, wenn etwa ein Thread aufgrund eines Speicherkonflikts oder einer strikten In-Order-Anweisung lange auf Daten warten muss.
Bei Nvidia wird nun die VP/RT ohne GS-Emulation unterstützt. Kurz gesagt kann dabei für die Viewport- und Render-Target-Erzeugung der Geometry-Shader komplett übersprungen werden, sofern er keine Instruktionen enthält. Was beim ersten Lesen seltsam klingt ("keine Instruktionen") wird klarer, wenn man weiß, dass die logische Pipeline einen Durchlauf durch die Geometry-Shader-Stufe vorsieht, egal ob dort etwas Sinnvolles passiert, also ein "echter Geometry-Shader ausgeführt wird, oder die Daten lediglich durchgereicht werden ("Null-Shader"). Letzteres ist ohne Support für dieses Feature die Norm, erhöht jedoch Latenzen und Ressourcenbelegung.
DirectX 12 Feature-Levels im Vergleich
Alles Weitere verrät die Tabelle, die einen aktualisierten Auszug aus unserem DX12-Artikel in der PCGH-Print 05/2016 (S. 49) darstellt.
| Architektur | AMD GCN 1.3/4th Gen GCN | AMD GCN 1.2/3rd Gen GCN | Nvidia Pascal | Nvidia Pascal | Nvidia Maxwell (2.0) | Intel Gen9 |
|---|---|---|---|---|---|---|
| Grafikchips (Beispiele) | Polaris 10, Polaris 11 | Fiji, Tonga, Carrizo | GP102, GP104, GP106 | GP102, GP104, GP106 | GM200, 204, 206, 208 | Skylake |
| Grafikkarten (Beispiele) | Radeon RX 480, RX 470, RX 460 | Radeon R9 Nano, R9 Fury (X), R9 285, R9 380(X) | Geforce GTX-1000-Reihe, Titan X (Pascal) | Geforce GTX-1000-Reihe, Titan X (Pascal) | Geforce GTX Titan X, GTX-900-Reihe | HD Graphics 510 - 580, Iris (Pro) |
| Ausprobiert anhand von … | RX 480 | Fury X, R9 380X | GTX 1080, Titan X (Pascal) | GTX 1060 6GB | GTX 980 Ti | Core i7-6700K |
| Treiberversion | 16.7.3 - 16.8.2 | 16.3.1 | 372.70/372.54 WHQL (nur Win10 1607) | 372.54 WHQL | 364.51 WHQL | 15.40.20.64.4404 |
| Direct-X-API-Support | 12 | 12 | 12 | 12 | 12 | 12 |
| Maximaler Feature-Level | 12_0 | 12_0 | 12_1 | 12_1 | 12_1 | 12_1 |
| Conservative Rasterization | Nicht unterstützt | Nicht unterstützt | Tier 2 | Tier 2 | Tier 1 | Tier 3 |
| Rasterizer Ordered Views | Nicht unterstützt | Nicht unterstützt | Ja | Ja | Ja | Ja |
| Tiled Resources | Tier 2 | Tier 2 | Tier 3 | Tier 3 | Tier 3 | Tier 3 |
| Resource Binding/Heap | Tier 3/Tier 2 | Tier 3/Tier 2 | Tier 2/Tier 1 | Tier 2/Tier 1 | Tier 2/Tier 1 | Tier 3/Tier 2 |
| Cross-Adapter Row Major Texture | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| VP/RT ohne GS-Emulation | Ja | Ja | Ja | Ja | Nicht unterstützt | Ja |
| PS Specified Stencil Reference | Ja | Ja | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Ja |
| Max GPU VM Bits pro Prozess/Ressource | 40/40 | 40/36 | 40/40 | 40/40 | 40/40 | 48/38 |
| Standard Swizzle 64KB | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt |
| Cross-Node-Sharing | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt |
| Minimum Precision | 16/32 Bit | 16/32 Bit | Full Precision | Full Precision | Full Precision | Volle Präzision**** |
| Double-Precision Shaders | Ja | Ja | Ja | Ja | Ja | Ja |
| UMA/Cache Coherent UMA | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | N. unterst./n. unterst. | Ja/Ja |
| Sonstiges | ||||||
| Asynchronous Compute (DX12) | Ja | Ja | Ja*** | Ja*** | Nicht unterstützt*** | Nicht unterstützt |
| Graphics/Compute Preemption | Primitive/DMA Buffer | DMA Buffer/DMA Buffer | Pixel/Primitive | DMA Buffer/DMA Buffer | DMA Buffer/DMA Buffer | Triangle/Pixel |
| Driver Command Lists (DX11) | Nicht unterstützt | Nicht unterstützt | Ja | Ja | Ja | Nicht unterstützt |
| Max. Feature-Level in Direct X 11.x | 12_0 | 12_0 | 12_1 | 12_1 | 12_1 | 11_1 |
* Aktuelle Game-Ready-Treiber unterstützen mit Fermi-Karten die DX12-API nicht, Werte in Klammern geben den Support-Status mit dem 358-70-Treiber wieder) **Auch als optionale Features unter DX11.3 nicht ***DX12-Treiber akzeptieren Befehle aus Graphics/Compute-Queue, in der Hardware werden sie jedoch nicht parallelisiert sondern seriell ausgeführt. Laut Nvidia unterstützt Maxwell 2.0 Asynchronous Compute, "es sei derzeit im Treiber nicht aktiviert". Pascal unterstützt AC durch dynamische Zuweisung einzelner SMs an die Graphics und Compute Queues, jedoch keine Mischbeschickung eines SMs aus beiden Warps ****Unter 11.3 wird das Feature unterstützt.
Disabled bezieht sich vermutlich darauf, dass Nvidias Treiber bei Maxwell keine separaten Compute-Queues effektiv umsetzen.
Maxwell könnte das im Prinzip, aber da Maxwell die Ressourcen zwischen Compute und 3D nur statisch partitionieren kann und den Kontext nur langsam wechseln, würde die Performance vermutlich in den meisten Fällen sinken und das ist der Grund wieso Nvidia das so nicht umsetzt und nie umsetzen wird.
Es ist natürlich korrekt, dass DX12 in diesem Aspekt keine spezifischen Hardwarevoraussetzungen definiert, nur die API-Anweisungen müssen funktionieren und zu keinen Anwendungsproblemen führen.
Wie Du besser als die meisten hier weißt, ist AC nichts anderes als ein Hint der App für den Treiber, welche Ops parallel ausgeführt werden können und wo synchronisiert werden muss. Solche Hints kann man nutzen, muss sie aber nicht. Und je nach HW-Architektur kann das mehr oder weniger Sinn machen. Bei Maxwell halt offenbar gar nicht.
Dann hat man auch keinen Windoof-Zwang mehr und kann auch endlich unter Linix ordentlich zocken, wenn die Grafikkartenhersteller ihre Treiber dafür auch in schuss halten.
Die Aussage, 'NVidia kann kein AC' war schon immer falsch.
Wenn man überlegt wie lange wir noch DX9 mitgeschliffen haben und wie lange es dauerte, bis sich DX11 halbwegs durchgesetzt hat. Warum erwartet man jetzt von DX12, dass es in nicht mal 3 Jahren nachdem es released wurde, überall und voll umfänglich im Einsatz ist. Finde auch die 3 Vulkan-Titel mehr als lächerlich, da hier das Studio quasi drauf angesetzt wurde, das unter Vulkan zu optimieren - so kriegt man jedenfalls den Eindruck über die ganzen Querverbindungen (AMD, Vulkan, Carmack, ID Tech-engine). Das ist was ganz anders als andere Entwickler, wo der Ausgangspunkt ein anderer ist.