AW: Nvidia Gameworks DX12: Optimierter Game-Ready-Treiber & verbesserte Entwicklerwerkzeuge
Sei es schlechtes Scheduling von Jobs, die an die GPU gesendet werden, nicht optimierte Clear-Funktionen von Bildern, unsinnige Compute Shader-Invocations zum Kopieren von Daten aus der DMA-Queue in den VRAM, zu strenge Memory Barriers oder was auch immer - die Funktionen, die die APIs bieten, wollen ja auch irgendwo implementiert werden.
Dies sind alles aufgaben die dem Spiele-Entwickler zufallen wenn er eben eine Low-level api nutzen will - und NICHT teil des Treibers.
Deshalb finde ich es ja auch so eigenartig das überheupt jemand Dx12/Vulkan für eine gute Entwicklung hält. low-level Api ist eben genau der Schritt weg von Treibereingriffen. Es soll jaj jetzt alles von den Entwicklern slebst gemanaged werden, bis runter zum korrekten Qeue-Scheduling.
Bei Dx11 hat Nvidia noch per Treiber die ganzen Compute-Tasks reinschedulen können, mit Dx12 muss das jetzt eben per Hand gemacht werden - und jetzt brignt dann Nvidia doch wieder Treiber raus die das umgehen. zeigt doch ziemlich eindeutig was für ein Griff ins Klo das ganze ist. Die meisten Spiele sind ein wandelnder Zombie-Bug, unzählige Fehler die nur durch viel geflicke iorgendwie noch am laufen sind, bis dann AMD/Nvidia daherkommen und das ganze durch teils sogar eigene Shader ausbügeln.
Ja, die Api-Funktionen wollen implementiert werden - aber bei Dx12 eben ohne Sicherheit. Wenn man es richtig bedient dann funktioniert alles. Wenn aber (so wie gewöhnlich) die Spezifikationen nicht eingehalten weden muss sich jetzt der Entwickler darum kümmern.
Und von seitend er hardwarehersteller ist jetzt weit weniger zu tun - denn die Apis sind eben low-level - ein fast direkter Zugriff auf die Hardware. Da sind keine zwischenschichten mehr.
openGl hats vorgemacht, Mantel/Vulkan/Dx12 haben nachgezogen - nur bissher wird eben genau der so hochgelobte Lowlevelzugriff schön gemieden.
@Pleasedontkillme
Tja - nvidia hat auch gehalten was sie versprochen haben - auch mit einer 970er hast du das volle Dx12 packet.
Async-Compute inclusive. Nur eben ist Async keine Wundewafe sonder das große heftplfaster mit dem AMD versucht das abgetrennte bein dran zu halten.
Mal abgesehen von der absolut besch*** Namensgebung (der name bezeichnet eigentlich einen ganzen bereich nicht ein feature) - stark vereinfacht ausgedrückt erlaubt es einen Teilweisen context-switch wen der aktuelle Grafik-Thread am idlen ist.
Für AMD ist das schick, denn die haben ja bissher das problem die Pipelines ohne blasen zu füllen. da gibt es oft genug Zeiten wo die hälfte der vector-Units nichts tun. Dehalb hat AMD auch einen extra cache eingebaut um diesen COntext-switch zu beschleuningen.
Jetzt ist es aber schon so das intel das längst per Treiber geregelt hat und damit eine Core-Auslastung von deutlich über 95% erreicht hat. Da gibt es ncihtmehr viel zu holen. Wenn dann jetzt aber noch extra mit Async-befehlen reingepfuscht wird dann kann die Leistung eben noch sinken die die Cores bereits ausgelastet waren und jetzt dann trozdem stopen müssen um einen neuen Queue zu bekommen.