DirectX 12: AMD betont, keine GPU unterstützt alle Features
AMDs Head of Technical Marketing, Robert Hallock, hat es sich nicht nehmen lassen, über Reddit nochmal auf das Thema DirectX 12 einzugehen. Dort betont er, dass keine bis dato veröffentlichte GPU alle Spezifikationen von DirectX 12 unterstützt, viele Resultate könnten aber durch andere Wege erreicht werden.
Gestern entfachte eine Diskussion rund um DirectX 12 auf aktuellen Geforces und Radeons. Der Grund dafür: Ein Oxide-Entwickler hat klargestellt, dass selbst Maxwell 2.0 keine performante Asynchronous Shader beherrscht. Damit kann eine unterstützende GPU parallel mit Render- und Computing-Aufgaben gefüttert werden, die Auslastung steigt dadurch an, interne Latenzen sinken, die allgemeine Performance steigt. Das asynchrone Computing ist kein Checklisten-Feature innerhalb der Direct3D-Spezifikationen, aber nichtsdestotrotz eine wichtige Funktion, die auf Geforces zu Performance-Einbrüchen führen würde.
In einschlägigen Foren kam dann natürlich schnell der Vorwurf auf, dass Nvidia dafür das Feature-Level 12_1 und nicht nur 12_0 wie AMD beherrscht. Robert Hallock, Head of Technical Marketing bei AMD, hat das zum Anlass genommen, nochmal über das Thema DirectX 12 und Feature-Levels zu texten. Die Quintessenz: Keine bis dato vorgestellte GPU beherrscht Microsofts neue API vollumfänglich. Jede Architektur habe "ihre einzigartigen Features", keine aber habe alle. "Manche dieser einzigartigen Features sind schlagkräftiger als andere". Schon in früheren Diskussionen schaltete sich AMD ein, dass das Feature-Level auf dem Papier nicht alles aussage, da viele optionale, aber nicht alle vorgeschriebenen Funktionen unterstützt werden.
Letztendlich bleibt Intel mit seiner Gen9-GPU-Architektur, wie sie bei Skylake eingesetzt wird, der DirectX-12-Feature-König. Zwar werden auch hier nicht alle Funktionen unterstützt, dafür aber die mit Abstand meisten. Inwiefern die Leistung generell für die aufwendigeren Effekte ausreicht, wird sich dann allerdings erst noch zeigen müssen. Für nicht unterstützte Funktionen bleibt auf allen Architekturen im Übrigen noch die Möglichkeit, diese durch "Umwege" zu erreichen.
Quelle: Reddit
| DX12-Feature-Check | Intel HD Graphics 530 (Skylake) | Nvidia Geforce GTX 980 Ti (Maxwell-GM200) | Radeon R9 Fury X (Fiji) |
|---|---|---|---|
| Treiberversion | 10.18.15.4256 | 353.62 WHQL | Catalyst 15.7.1 WHQL |
| DX12-Support | Ja | Ja | Ja |
| Maximum Feature-Level | D3D_FL_12_1 | D3D_FL_12_1 | D3D_FL_12_0 |
| MinPrecision Support | Nur volle Präzision | Nur volle Präzision | Optional auch 16 Bit |
| Rasterizer Ordered Views | Ja | Ja | Nein |
| ConservativeRasterization | Tier 3 | Tier 1 | Nicht unterstützt |
| TiledResources | Tier 3 | Tier 3 | Tier 2 |
| ResourceBinding | Tier 3 | Tier 2 | Tier 3 |
| CrossAdapterRowMajorTexture Support | Ja | Nein | Nein |
| VPAndRTArrayIndexFromAnyShaderFRSWGSE | Ja | Nein | Nein |
| PSSpecifiedStencilRef Support | Ja | Nein | Ja |
| UMA | Ja | Nein | Nein |
| CacheCoherentUMA | Ja | Nein | Nein |
| MaxGPUVirtualAddressBitsPerResource | 38 | 40 | 40 |
| MaxGPUVirtualAddressBitsPerProcess | 48 | 40 | 40 |
| DoublePrecisionFloatShaderOps | Ja | Ja | Ja |
| OutputMergerLogicOp | Ja | Ja | Ja |
| TypedUAVLoadAdditionalFormats | Ja | Ja | Ja |
| StandardSwizzle64KB Support | Nein | Nein | Nein |
| CrossNodeSharing Support | Nein | Nein | Nein |

Für Ashes sieht es dann so aus dass man mit Nvidia Karte einfach unter DX11 spielt.
Bei anderen Spielen die viel async verwenden muss man halt evtl. Details runter schrauben um flüssig spielen zu können. Aber die Spiele wird schon jeder spielen können.
Man kann es auch einfach so stehen lassen und dann läuft der Code eben schlecht auf GPUs von Vendor X, gibt es auch.
Scheint so als ließe sich das Feature nach belieben aktivieren bzw. deaktivieren und das sogar zur Laufzeit, zumindest in der UE4
Ich hoffe einfach mal, dass sich Entwickler, die DX12 benutzen, dann auch die Mühe machen und einen optimalen Pfad für (fast) jede GPU einbauen (siehe Ashes of Sing. und Async-Compute).