Balikon schrieb:
Oder gibt es DX12 Optimierungen, die speziell Nvidia runterziehen bzw. den Radeons in die Karten spielen (oh, ein Wortspiel)?
(Ist jetzt nur der grobe Ablauf, den ich zu dem Thema gelesen habe....ich gebe Mal wieder was ich da in Erfahrung bringen konnte)
DX12 ermöglicht mehr Freiheit bei der CPU Auslastung......wenn richtig programmiert, können die Arbeiten auf sehr viele Threads aufgeteilt werden und diese können die dawcalls auch direkt an die GPU senden.
AMD hat schon vor langer Zeit ihre GPUs mit einem Hardware scheduler ausgestattet, der das annehmen und verarbeiten kann.
Nvidia hat sich Jahre lang an einem reinen Software scheduler aufgehalten(Ausnahme Fermi), und auch jetzt ist es nur eine Kombi.
Und da hat Nvidia zwar die Möglichkeit viele Dinge über den Treiber zu beeinflussen, die bei AMD in der Hardware fest verankert sind.....aber es fällt eben auch zusätzliche Arbeit über den Treiber an.
Novasun schrieb:
Aber was macht NV im Treiber um in DX11 so gut abschneiden zu können? Und hier spielt nur der Vergleich NV DX11 vs DX12 eine Rolle....
Nvidia trickst mit ihrem Treiber die Limitierung von dx11 aus.
Eigentlich wird bei dx11 alles auf einem Thread gebündelt.
Der Renderthrad sorgt dafür, dass alles seine chronologische Ordnung hat und er bearbeitet die drawcalls.
Natürlich lagert er je nach Programmierung des Spiels mehr oder weniger gut die Spielabläufe auf andere Threads aus, aber nach dem standardvorgehen bekommt die GPU am Ende eine lange Liste mit allen Objekten, Eigenschaften, Effekten usw. die sie darstellen soll.
Spiel Ablauf-> API(dx11)->Treiber->GPU
Und API und Treiber, liegen beide auf dem Renderthrad...->drawcalls sind single Thread limitiert.
AMD ist in diesem Vorgehen gefangen....die Hardware ist darauf ausgelegt....der Treiber hat kaum was zu tun.
Nvidia ist da flexibler und verteilt über Treibereingriffe die drawcalls auf andere arbeitslose Threads....bringt alles zusammen zur GPU.... Fertig
Jetzt hat Nvidia also diese eigentlich single Thread limitierte Arbeit, multithreaded gemacht.
Insgesamt steigt der Treiber Overhead....der Treiber verursacht insgesamt mehr CPU Last, aber wenn sich das auf bisher ungenutzte CPU Threads verteilt, steigt die Leistung im DX11 CPU Limit enorm.
AMD braucht da eine spezielle Programmierung.... Der Render Thread darf praktisch nix anderes machen als Arbeit zu verteilen und die drawcalls zu bearbeiten.
Hat man den von allem anderen frei geräumt, reicht es für eine gute Leistung....
...aber das ist unpraktisch für die Entwickler...es ist viel einfacher alles auf dem Render Thread zu lassen, als alles auszulagern.
Natürlich bemühen die sich möglichst viel auszulagern, aber mit Nvidia GPU ist das nicht so wichtig....und AMD ist den Entwicklern nicht so wichtig.
Deshalb liefen zum Start von ryzen auch AMD GPUs Tendenziell besser auf Intels 4kern CPUs und Nvidia GPUs teilweise gut auf 8kern ryzen....
AMD GPUs brauchten die höhere single Thread Leistung, und konnten mit 8 Kernen nix anfangen...Nvidia GPUs konnten eher von mehr Kernen profitieren.
,............
DX12 legt die drawcalls in die hand der Entwickler....das kann nahezu perfekt laufen wie in AotS...und gut, wie bei den letzten beiden tomb Raider Spielen (zumindest nach einigen Patches)...oder Hitman....
Aber es kann auch schlecht laufen wie in vermentide, tomb Raider vor den Patches, fortnite...usw.
Anno 1800 DX12 ist im Grunde auch schlecht....es limitiert über einen Thread wie dx11 und nutzt die CPU nur minimal besser aus.
Dafür gibt es Bugs und schlechteres VRam Management.
Ist für AMD GPUs trotzdem die bessere Wahl, aber es bleibt ein fader Beigeschmack.
Und Alles auf unendlich viele Threads zu verteilen kann auch Nachteile haben...mehr Verwaltungsaufwand und vor allem mehr Zeit, die für die Kommunikation drauf geht.
DX12 ist trotzdem die Zukunft....es kann ja ab Werk noch mehr als Nvidia mit Tricks ermöglicht....aber Nvidia hat dann zwangsläufig mehr Treiber Last, oder sie entwickeln auch voll auf DX12 und Vulkan....dann verlieren sie aber voraussichtlich ihre Vorteile in dx9-11.