So da muss ich ausholen
Erstmal wenn games mehr CPu kerne nutzen liegt das ausschließlich am game selbst also der game engine
Warum ist das so
ab directx10 kann directx per gpgpu direkt an shader befehle ausführen aber ist limitiert durch den mainthread der das Bild berechnen soll.
das heißt die Auflösung des Bildes ist auf einen cpu Kern limitiert.
Warum ist das ein Problem weil GPu mittlerweile so schnell sind das die Darstellung des Bildes in 1080p die GPu nicht auslastet und nur cpu takt dies erhöhen kann.
Da spielt es keine rolle ob nun 3096 oder 1280 shader aktiv sind
klar die höheren shader würden mehr Effekte zulassen und somit je nach game mehr fps
je geringer die gpu last bei einen game bsp pvz gw2 mit der frostbyte engine2 wird eine gtx1060 nicht mal voll ausgelastet in 1080p max Einstellung bei eine cpu Takt von 3,6ghz aber wenn ich dann 4ghz habe ist die gpu voll ausgelastet
anders sieht das bei BF1 aus wo die gpu Effekte aufwendiger sind. Da reichen 3,6ghz
Bei IPC von 1,6 amd und intel cpu aus.
So nun zu den unterschieden der GPu architekturen
Nvidia hat dx11 fähige GPu und das Rasterizing Problem Software seitig gelöst. heißt der Mainthread wird entlastet was die Auslastung der gpu in dx11 fast eliminiert.
heißt das nvidia für ihre gtx1060 nur eine cpu benötigt mit 3,6ghz sofern ein game entsprechend gpu last anliegt bsp deus ex MD
Wogegen amd rx480 min 4,0ghz benötigt
Amd hat eine hardware Lösung für das Problem des dx11 limits am CPU Takt.
Was aber directx11 nur suboptimal entspricht.
dafür gibt es directx 12
ab dx12 kann man die gpu shader direct vom directx compiler anweisen das diese die aufgaben verteilt.
klar muss dann die Entwickler noch zusätzlich anpassen. was funktioniert den schon automatisch gut.
Aber die api macht schon fast die ganze Arbeit.
das ist im Gegensatz zu allgemein gültigen anmahne ein high level api
das low level bezieht sich ur auf den Ausgangscode. Den die api auswirft
Dirctx11 hat wie gesagt ein limit beim cpuz Takt.
Bei dx12 kann man durch diese Option den benötigen cpu Takt senken. von derzeit 4,0ghz für die rx480 auf 3,4ghz
Ds durch dx12 mehr Kerne genutzt werden können stimmt nicht
Directx kann seit version 10, 4 threads per gpgpu aufgaben zuweisen an cpu
ab version 11 192threads
Die Kern Auslastung in dx11 oder dx12 hängt vom Spielentwickler ab.
Die drawcalls die man durch den neuen api Zuweisung bereitstellen könnte geht nur über gpgpu
Dort sind theoretisch mehr als 1kern cpu möglich das diese das Bild berechnen
Aber bei seriellen code ist das so eine Sache.
irgendwann muss der thread auf das Ergebnis eines anderen warten. Somit erwarte ich mit dx12 nur bessere GPu Auslastung bei amd GPU hardware
Nvidia gpu profitieren gar nicht
Optisch ist dx11 und dx12 nichts neues mehr drin.
es gibt keine neuen Bildfilter, Berechnungsvorteile nur bei amd gpu
Was den verdacht bestätigt das dx12 für amd GCN gedacht ist.
nvidia muss wohl blöd geguckt haben als MS dx12 angekündigt haben.
2012 hieß es noch directx11 wäre das letzte dx
Und kaum hat amd mantle vorgestellt kam auch schon 2015 DX12
man sieht an vulkan was überwiegend das 1 thread Problem auch angeht das mit nvidia gpu auch die gpgpu Ansteuerung geht
Ohne dabei gcn spezifisch hardwarw feature anspricht.
das nvidia dx12 läuft ist eher so emuliert als wirklich unterstützt.
Daher ist jede Aufschrift für directx12 auf nvidia Kartons fürn Arsch
mit directx12 hat man keine Vorteile, nicht optisch und keine Performance Verbesserung bei nvidia.
Vulkan dagegen nutzt das was die gpu schon sein 2006 können.
nämlich die shader direkt ansprechen und da die Zeichenbefehle anfordern.
Ob nun das besser ist ist gewagt zu erwähnen.es hängt viel davon ab wie viel cpu Leistung eine gpu benötigt.
Und vulkan kann die cpu last deutlich verringern. also genau das was directx12 auch tun soll. nur das dx12 nur auf amd hardware läuft.
Eine API ist viel mehr als nur die software das ein Bild erstellt wird.
Das Paket regelt die komplette Hardware Ansteuerung und somit auch die cpu Leistungsanforderung an einen thread oder wahlweise an shader und somit an alle cpu Kerne
Die Standard Einstellung ist alles auf einen CPU thread zu schreiben. nun ein Spiel läuft ja nicht nur der Bildaufbau sondern auch andere dinge.
nur wirklich schlechte game engine die noch aus der zeit vor directx10 sind benutzen wirklich nur 1 CPU Kern und einen weiteren für Logik
Was dx12 kann gegenüber anderen dx Generationen
Direct3D feature levels (Windows)
was directx bewirkt bei amd und nvidia gpu's
Anhang anzeigen 949598