AMD Vega: Primitive Shader müssen vom Spiel unterstützt werden
Primitive Shader ist eines der wesentlichen neuen Features von AMDs Vega-GPU, das aber bis heute von keinem Spiel genutzt worden ist. AMD hat jetzt abermals klar gestellt, dass Spiele die Funktion dafür explizit unterstützen müssen. Diese Aussage hat viel Aufmerksamkeit erzeugt, dabei ist sie nicht neu. Ein Überblick.
Primitive Shader sparen viel Rechenaufwand ein
Primitive Shader verändert die klassische Renderpipeline dahingehend, dass nicht sichtbare Polygone bereits vor dem Rendern verworfen werden. Das spart Rechenzeit in der gesamten Pipeline. Gegenüber der bekannten Pipeline, die AMD und Nvidia seit Jahren nutzen, soll die maximal Anzahl berechenbarer Dreiecke pro Sekunde auf einer Vega-10-GPU so um den Faktor vier ansteigen. AMD nennt die neue Pipeline „Next Generation Geometry Pipeline“.
Und Primitive Shader funktionieren offensichtlich grundsätzlich nicht nur in der Theorie, sondern auch in der Praxis. AMD präsentierte bereits im Januar 2017 auf Basis von Prototypen-Hardware und -Treibern einen ersten selbst gemessenen Polygondurchsatz. Wie genau Primitive Shader in der Hardware umgesetzt wurden, ist hingegen bis heute nicht bekannt. Was bekannt ist: Vega beherrscht auch die traditionelle Pipeline. Und die wird auf Radeon RX Vega 64 und Radeon RX Vega 56 bis jetzt ausschließlich genutzt. Aber warum ist das so?
Primitive Shader per Treiber oder API?
Um das zu ergründen, Bedarf es der Kenntnis darüber, wie die Grafikkarte die Primitive Shader nutzen kann. In Frage kommt die Umsetzung im Treiber, dann könnten alle Spiele davon Gebrauch machen, oder in Form einer API, die wiederum von Spielen direkt angesprochen werden muss – jedes Spiel müsste also angepasst werden, um von Primitive Shadern profitieren zu können. Welchen Weg AMD bei Vega geht, darüber herrschte aber auch Anfang 2018 vermeintlich Unklarheit.
Auf der CES 2018 Anfang des Monats hatten einige Redakteure dann wiederum die Möglichkeit, mit AMD-Mitarbeitern zu sprechen. Und dort war in Erfahrung zu bringen, dass der „alternative Treiber-Pfad für Primitive Shader verworfen worden ist“. Marc Sauter von Golem berichtet im 3DCenter-Forum in dieser Woche davon.
Seine Aussage führte binnen Stunden zu einem ausufernden Shitstorm auf Reddit und IT-Seiten berichteten weltweit davon. Dabei hatte AMD über die offiziellen Kanäle immer nur von einer Möglichkeit gesprochen Primitive Shader auf Vega zu nutzen: Per direkter Integration in einem Spiel, die mit einer speziellen API durchgeführt werden muss.
Offizielle vs. offizielle Äußerungen auf Twitter
Erklärt werden kann das mit der Aussage eines AMD-Mitarbeiters auf Twitter zur Vorstellung von Radeon RX Vega im letzten Sommer, der direkt bei der Radeon Technologies Group im „Game Engineering“ arbeitet. Er hatte sich öffentlich auf Twitter mit anderen Entwicklern darüber ausgetauscht, wie die Primitive Shader angesprochen werden können. Und auf die Frage, ob die Primitive Shader automatisch durch den Treiber genutzt werden können, lautete seine Antwort „Ja“.
Reine Spekulation: AMD hatte beides geplant
AMDs offizielle Aussagen auf Veranstaltungen und Präsentationen und die Aussagen des Mitarbeiters legen nahe, dass AMD ursprünglich beide Varianten zur Umsetzung der Primitive Shader vorgesehen hatte. Sowohl die gezielte Implementierung per API für einzelne Spiele für mutmaßlich mehr Leistung und eben auch eine allgemeine Lösung per Treiber mit wahrscheinlich weniger Effekt. Wahrscheinlich war sich AMD aber nie abschließend sicher, dass der Weg über den Treiber auch wirklich funktionieren wird. Richtig offiziell wurde sie deshalb nie.
AMD spricht von den Fortschritten bei Vega-Features
AMD hat die Diskussion der letzten Tage darüber, dass „ein Vega-Feature abgekündigt wurde“, zum Anlass genommen, auf einer Folie genau vom Gegenteiligen zu berichten. Und in der Tat ist der Draw Stream Binning Rasterizer mittlerweile für einen Großteil der Spiele aktiviert. Zur Vorstellung der Radeon Vega Frontier Edition war er noch komplett abgeschaltet und vermutlich auch zum Start der Radeon RX Vega noch nicht so häufig und intensiv im Einsatz wie mittlerweile nach mehreren Treiber-Updates.
Bei Rapid Packed Math spricht AMD von einer fertigen Implementierung in Wolfenstein 2, dem noch ausstehenden Benchmark 3DMark Sierra und dem für Ende Februar erwarteten Far Cry 5. Beim „Next-gen Geometry path“ spricht AMD von einer seit der Vorstellung aktivierten Aufgabenverteilung und nennt die Primitive Shader, die für die Entwickler immer noch „sichtbar“ gemacht werden müssen, damit sie genutzt werden können. Offenbar sind dazu noch Veränderungen an den APIs DirectX (und Vulkan) nötig. Damit könnte AMD in einer Randbemerkung auch den Grund dafür genannt haben, warum noch kein Spiel das Feature nutzt – und womöglich auch, warum es keine Treiberlösung gibt.
Hinsichtlich HBCC nennt AMD keine Änderungen gegenüber dem Stand zur Vega-Vorstellung: Die Funktion ist auch weiterhin standardmäßig deaktiviert, sie zu aktivieren kann sowohl Vor- als auch Nachteile in Spielen nach sich ziehen.