> > > > Was Microsoft mit DirectX 12 besser machen will

Was Microsoft mit DirectX 12 besser machen will

Veröffentlicht am: von

directx12Vor kurzem erläuterte Microsoft erstmals seine Pläne bezüglich DirectX 12 und sorgte gleich für einige Überraschungen. So konzentriert man sich bei Microsoft nicht auf die Entwicklung neuer Features und Effekte, sondern will vor allem an der Effektivität von DirectX arbeiten. Letztendlich soll die effektivere Nutzung von Hard- und Software aber dazu führen, dass die Grafikqualität der Engines noch weiter zunimmt, sodass wiederum schon von einer neuer Detailstufe gesprochen werden kann. Außerdem soll die meiste bereits ausgelieferte Hardware in Form von Prozessoren und IGPs in der Lage sein per DirectX 12 zu kommunizieren. Ob nun ausschließlich Windows 8, Windows 8.1, Windows Phone "Blue" und die Xbox One in der Lage sein werden DirectX 12 einzusetzen, ließ Microsoft vorerst noch einmal offen - klar ist allerdings, dass man die Kompatibilität möglichst breit anlegen möchte.

DirectX 12

Zunächst einmal etwas Hintergrund zur Entwicklung von DirectX 12. Gerne werden zeitliche Zusammenhänge zwischen der Mantle-API von AMD und DirectX 12 von Microsoft genannt - manche sehen DirectX 12 sogar als Reaktion auf Mantle. Doch dazu muss man wissen, dass eine solche API nicht innerhalb von wenigen Wochen oder Monaten entwickelt werden kann. Laut AMD arbeitete man fünf Jahren mit Entwicklern aus verschiedenen Spiele-Studios zusammen, bevor man Ende letzten Jahres das erste mal damit an die Öffentlichkeit ging. Laut AMD und NVIDIA dauert die Zusammenarbeit zu DirectX 12 mehr als vier Jahre an. Direkte Zusammenhänge zwischen den APIs sind also auszuschließen, wenngleich es natürlich zu Überschneidungen der Interessensbereiche kommt und es nicht auszuschließen ist, dass hier ein gewisser Informationsaustausch innerhalb der Unternehmen stattgefunden hat. Professionelle Unternehmen versuchen diese Konflikte aber weitestgehend zu vermeiden, um nicht in eine Schieflage innerhalb der Partnerschaft zu geraten.

Multi-Thread-Skalierung

Ob zwei, vier, sechs oder gar acht Kerne, zuzüglich Hyper-Threading kommen schnell bis zu einem Dutzend Kerne zusammen, die aktuell von der Software beansprucht werden können. Richtig effektiv genutzt werden aber nur die wenigsten davon. Gute Engines schaffen es halbwegs vernünftig fünf bis sechs Kerne zu nutzen, von einer effektiven Nutzung ist aber selbst dann noch nicht zu sprechen.

Um dies zu demonstrieren hat Microsoft jeweils eine DirectX-11- und eine DirectX-12-Version des 3DMark von Futuremark genommen und einmal die Auslastung der CPU-Kerne aufgeführt. Während im oberen Fall die Aufgaben zwar auf vier Threads aufgeteilt sind, ist die CPU-Time dennoch extrem hoch, da der Thread0 einige seiner Tasks nicht auf die weiteren freien Threads auslagern kann.

Visualisierung der besser Ausnutzung der CPU
Visualisierung der besser Ausnutzung der CPU

Im unteren Beispiel unter DirectX 12 sind gleich zwei Effekte zu erkennen: Zum einen sind die Aufgaben besser auf die vier Threads verteilt (beispielsweise der Tasks des "UM Driver"), zum zweiten reduziert DirectX 12 den Overhead, also die unnötigen Berechnungen, was die einzelnen Aufgaben auch in kürzerer Zeit bearbeiten lässt. Diese kürzeren CPU-Zeiten bzw. Latenzen sorgen in der Folge dafür, dass die GPU nicht mehr auf die CPU warten muss, was in letzter Konsequenz für mehr FPS sorgt.

Ebenfalls angepasst wurde Forza Motorsport 5, dass dazu extra von der Xbox-One-Version auf DirectX 12 portiert wurde. Genutzt wurde zur Darstellung der Performance eine GeForce GTX Titan Black Edition, da man zeigen wollte, dass selbst bei hohen Qualitätseinstellungen die Möglichkeit vorhanden ist konstante 60 FPS zu halten, was gerade im Hinblick auf den Einsatz mit einer VR-Brille oder der grundsätzlichen Diskussion zu möglichst stabilen FPS eine entscheidende Rolle spielt. Auf die zuvor notwenige Vorhaltung eines Double- oder Triple-Buffers gehen wir später noch etwas genauer ein.

CPU-Time-Vergleich zwischen DirectX 11 und DirectX 12
CPU-Time-Vergleich zwischen DirectX 11 und DirectX 12

Eine weitere Demo betrifft die Cryengine, die natürlich ebenfalls DirectX 12 unterstützen wird. Auch hier demonstrierte Microsoft die niedrigen CPU-Latenzen, was wiederum zu mehr FPS führen soll.

Pipeline States

Noch in DirectX 11 erlaubt Microsoft die Manipulation von zahlreichen sogenanntes States, um ein orthogonales Objekt zu umschreiben. Die dabei verwendeten Input Assembler States, Pixel Shader States, Rasterizer States und Output Merger States konnten unabhängig voneinander modifiziert werden. Zwar sorgte dies für eine gute Flexibilität innerhalb der Programmierung einer der Grafik-Pipeline, passte aber nicht sonderlich gut zur Art und Weise wie moderne GPUs arbeiten. So fassen die Hardware-Hersteller gerne Pixel Shader State und Output Merger State in eine dediziertes Stück Hardware zusammen, aufgrund der Unabhängigkeit dieser Komponenten in DirectX 11 konnte es aber dazu kommen, dass der Treiber den kompletten State aus allen Teilbereichen nicht zusammenfassen konnte und somit kam es zu einer verzögerten Draw Time (Darstellung des eigentlichen Frames). Diese überflüssigen Wartezeiten sorgten letztendlich also dafür, dass weniger Draw Calls pro Frame durch die Pipelines geschickt werden konnten.

DirectX 12 fasst diese unterschiedlichen States nun zu einem Pipeline State Object (PSO) zusammen. Soft- und Hardware sprechen nun also bereits in kompletten Blöcken, die so auch viel schneller in der Hardware berechnet werden können. Diese PSOs können auch dynamisch geändert werden und müssen nicht jedes mal im kompletten Umfang berechnet werden. Aus all diesen Maßnahmen resultieren deutlich mehr Draw Calls pro Frame für deutlich mehr Objekte in einem Frame bzw. in höheren FPS.

Work Submissions

In DirectX 11 waren die sogenannten Command Lists eine unendliche Aneinanderreihung von Befehlen für die GPU. Dies entspricht allerdings wiederum nicht der Art und Weise wie Hardware gleich mehrere Aufgaben gleichzeitig erledigen kann, denn da diese Command List seriell abgearbeitet werden muss, muss ein Schedular dafür sorgen, dass diese Aufteilung möglichst effizient geschieht, was nicht immer ideal gelingt.

DirectX 12 schickt nun nicht mehr eine lineare Liste über den Treiber an die GPU, sondern bereits vordefinierte und abgeschlossene Listen, die einen bestimmten Umfang an Aufgaben beinhalten, die dann von der GPU abgefertigt werden können und auf die Leistung und Möglichkeiten der Hardware zugeschnitten ist. Während diese Liste nun von der GPU abgearbeitet wird, stellt der Treiber in Abhängigkeit der jeweiligen Auslastung der vorangegangenen Liste eine weitere zusammen, die idealerweise bereits fertiggestellt ist, wenn die erste Liste abgearbeitet wurde. Letztendlich muss nur noch ein einziger serieller Prozess diese vordefinierten Listen wieder zusammenführen, was allerdings deutlich effizienter ist, als eine einzige serielle Liste mit allen Befehlen einzeln zu erstellen.

Die sogenannten Bundles sind eine Weiterentwicklung dieser vordefinierten Command Lists. Sollen z.B. zwei identische Objekte in einem Frame berechnet werden, die sich nur durch die Texturen unterscheiden, so wird im ersten Durchlauf die bereits vordefinierte Command List aufgezeichnet und danach einfach erneut ausgeführt, ohne das sie noch einmal zusammengestellt werden muss. Alle Instruktionen und Befehle müssen also nur einmal erstellt werden.

Resource Access

Mit DirectX 12 möchte Microsoft den Entwicklern einen weitreichenderen Zugriff auf einige Ressourcen, beispielsweise den Speicher geben. In DirectX 11 wurden zunächst einmal sogenannte View Objects erstellt, die fest an bestimmte Slots gebunden wurden, welche wiederum fest mit einem Shader State in der Pipeline verknüpft waren. Die Shader konnten dann auf diese Slots zugreifen und die darin enthaltenen Daten lesen. Sollten aber bestimmte Daten mehrfach genutzt werden, mussten diese View Objects aber immer wieder neuen Slots und Shader States zugeschrieben werden. Auch hier liegt laut Microsoft einer der Gründe für den großen Overhead bei den Draw Calls.

Mit DirectX 12 können die Spieleentwickler vordefinierte Ressourcen festlegen, die in einem sogenannten Descriptor Heaps gespeichert sind. Es ist also von vorneherein festgelegt, welche Ressource durch welche Pipeline für einen bestimmten Draw Call genutzt wird. Natürlich können auch mehrere dieser Descriptor Heaps in kompletten Tabellen erstellt werden, sodass sich die Aufteilung der zur Verfügung stehenden Hardware anpassen lässt.

Viele moderne Engines nutzten das sogenannte Deferred Rendering. Dazu müssen sie sich einen G-Buffer anlegen, in dem die Resourcen für die Shader-Berechnungen festgelegt wurden. Dieser G-Buffer kann aber sehr schnell sehr voll werden, was Zugriffe darauf sehr langsam werden lässt. Daher hat Microsoft in DirectX 12 die Einteilung der Ressourcen sehr dynamisch gestaltet, was einen Wechsel bzw. eine neue Zuteilung schnell und einfach möglich machen soll.

Soweit zunächst einmal die ersten Erklärungen seitens NVIDIA. In der kommenden Woche werden wir uns auf der GTC 2014 von NVIDIA befinden und dort sicher noch deutlich mehr über DirectX 12 hören. Zunächst einmal bleibt also nur abzuwarten, ob Microsoft auch halten kann, was es verspricht. Noch in diesem Jahr soll eine erste Preview Version erscheinen, die dann auch einen Rückschluss auf das erreichte Performance-Plus zulässt.

Social Links

Ihre Bewertung

Ø Bewertungen: 0

Tags

Kommentare (36)

#27
customavatars/avatar152785_1.gif
Registriert seit: 03.04.2011

Stabsgefreiter
Beiträge: 325
@honeylaunebaer dein beispiel hinkt. selbst wenn in den screen etc die grafikeinstellung runtergeschraubt wären, so ändert es nix daran das es um die cpu belastung geht und wie die einzelnen kerne angesprochen werden. außerdem warum immer mantle heran gezogen wird verstehe ich nicht. bei der entwicklung von dx12 war nvidia qualcoom sowie amd und intel beteiligt. sprich sollte dx draußen sein wird mantle in der versenkung verschwinden. eine 2te api war damals aus sicht von gamern kein gewinn und wird es auch jetzt nicht mit mantle werden.
#28
customavatars/avatar180392_1.gif
Registriert seit: 03.10.2012
Schleswig in Schleswig Holstein!
Leutnant zur See
Beiträge: 1168
Zitat honeylaunebaer;22000954
ok, kleines denkbeispiel:
Stolz verkünde ich meinem Chef: Chef, dank dem neuen Lager bin ich 100% schneller mit meiner Arbeit!


Du hast den Screenshot nicht verstanden, es geht nicht um die Arbeit die du machen sollst, sondern um deine Kollegen!
Also um dein Beispiel aufzunehmen: Du bekommst jetzt statt drei Kollegen, die die meiste Zeit Nasebohrend in der Ecke stehen, Skat oder an sich selber rumspielen, drei fähige Mitarbeiter die praktisch die selbe Arbeit leisten können wie du auch.
Völlig egal wie groß das Lager ist = ihr werdet schneller fertig!
Das ganze auch noch ohne Einschränkungen bei den Werkzeugen (Aka CPU-/GPUs!)
Nu stell dir mal vor was erst los ist ( Oder: Was für schöne Dinge das Team leisten kann) wenn das Team jetzt noch Zeit hat sich 1 1/2 Jahre einzuspielen?
Mantle ist auch nicht über Nacht vom Himmel gefallen ;)

Ich finde es generell sehr lustig das jetzt die selben Argumente kommen wie bei den ersten BF 4/Mantle Screenshots... nur von der "anderen" Seite :lol:

Mal sehen was passiert wenn OpenGL die ersten Demos vorstellt.. :shot::vrizz:
#29
customavatars/avatar84710_1.gif
Registriert seit: 10.02.2008

Admiral
Beiträge: 15048
Zitat ~DeD~;22001195
@foley

nahe zu identisch ist nicht gleich. mach doch einfach mal den test bei dir am rechner. nimm ein beliebiges spiel und starte es mit und ohne schatten. schatten sid mit der größte ressourcenfressen(abhängig von iherem detailgrad im spiel) welcher sehr wohl für längere rechenzeiten auf der cpu sorgt.

und wer hier tatsächlich das microsofts märchen von bereits verfügbarem DX12 glaubt kann auch mal gleich weinachten feiern. amd und dice haben ewigkeiten gebraucht und MS bastelt es in drei monaten zusammen ;) sagen aber gleichtig, dass sie es erst ende 2015 verfügbar machen können...natürlich.
diese beiden bilder sehen eher nach etwas angepassten grafiksettings und einigen änderungen an dx11 aus.

ps: elvis lebt noch immer ;)


Ich kann bei mir noch so viel testen, das ändert nichts daran, dass das kein Beweis ist, dass "getürkt" ist. 3DMark ist dynamisch, ist die Sonne ein Stück weiter fehlen auch schon Schatten. Übrigens soll es dieses Jahr noch eine Preview geben, zum Weihnachtsgeschäft 2015 (Also Q4 2015) soll es DX 12-Spiele geben. Im übrigen dürfte Microsoft wesentlich länger an DX 12 sitzen als AMD an Mantle, DX 12 soll nämlich auf einer viel breiteren Hardwarebasis lauffähig sein. Ich frag mich da ganz allgemein warum man hier das was berichtet wird, gerne ignoriert ebenso den Entwicklungsaufwand und lieber so tut als wenn die bescheissen. Ist das eine halbwegs sachliche Analyse der Dinge oder der Versuch sich etwas so hinzudrehen, wie man es gerne hätte? AMD hat von Start der Arbeit bis zu den ersten Screens und Daten zu Mantle knapp 18 Monate gebraucht, aber Microsoft hat jetzt natürlich Angst und türkt nach drei Monaten Ergebnisse um danach in 18 Monaten heimlich alles fertig zu stellen.
#30
customavatars/avatar160319_1.gif
Registriert seit: 17.08.2011

Vizeadmiral
Beiträge: 8020
wenn man zügig zwischen den bildern hin und her schaltet, sehe (zumindest ich), dass der Winkel des Lichts der selbe ist.
sieht man am Farn vorm Auto deutlich, dass der Schatten an der selben Stelle ist = selber Lichteinfall.
und es werfen weniger Objekte, wie Bäume und Felsen z.B., Schatten. das sieht man auch deutlich.

ich fühl mich ja ehrlich so mittlerweile von den Herstellern verarscht. damit Mantle Wirkung zeigt, muss man AA und die Texturen runterdrehen. DX12 kommt mit weniger Schatten daher.
das kann DX11 auch fast alles so in der Art.
Hammer Fortschritt ...
und der Kunde als zahlender Testpilot mit eigenem Equipment.
läuft ;)
#31
customavatars/avatar34168_1.gif
Registriert seit: 26.01.2006
Das kleine Haus auf Karkand
Korvettenkapitän
Beiträge: 2347
"Im übrigen dürfte Microsoft wesentlich länger an DX 12 sitzen als AMD an Mantle"

problem ist nur, das microsoft vor kurzem selbst gesagt jhat, dass sie kein DX12 herausbringen werden ;)

eine preview dieses jahr ist volkommen in ordnung, aber nicht nach 2 monaten arbeit ;)
#32
customavatars/avatar99864_1.gif
Registriert seit: 03.10.2008

Matrose
Beiträge: 18
"und der Kunde als zahlender Testpilot mit eigenem Equipment.
läuft ;)"

versteh ich nicht...soll DX12 nicht auf allen Karten (Kepler, Fermi, Maxwell) laufen???
#33
customavatars/avatar84710_1.gif
Registriert seit: 10.02.2008

Admiral
Beiträge: 15048
Zitat ~DeD~;22001586
problem ist nur, das microsoft vor kurzem selbst gesagt jhat, dass sie kein DX12 herausbringen werden ;)


Problem ist, dass das ein Gerücht ist, dass MS schon im April 2013 dementierte Kein DirectX 12 geplant? Microsoft will weitermachen - WinFuture.de Man gucke mal für welche Firma der Herr arbeitet, der das Gerücht in Umlauf gebracht hat...

@Slot108: Das ist nicht exakt der selbe Winkel, achte mal auf den Bereich vorne auf vertikaler Höhe der Motorhaube. Da tauch nämlich licht auf wo vorher kein war.
#34
customavatars/avatar88089_1.gif
Registriert seit: 27.03.2008
Hannover
Vizeadmiral
Beiträge: 7917
Mick,

gib es auf, die Leute sind blind und "wollen" sehen ;)

Was mich viel eher nervt ist das Hin&Her bei den Entwickler "Gerücht dies wird nicht entwickelt, Gerückt das wird doch entwickelt, Gerücht nein, beides stimmt doch gar nicht". Der einzig Dumme dabei ist der Kunde und sonst niemand, denn was wirklich hinter den Kulissen passiert, wissen wir nicht, wir können höchstens Vermutungen anstellen und Seiten wie Hardwareluxx&Co brabbeln auch nur nach, was Ihnen vor die Flinte geworfen wird, worüber sie wieder berichten dürfen.

Die ganze Wahrsagerei tut keinem von uns gut, am Ende zählt nur, was auf den Tisch kommt und somit "greifbar" wird, "was wäre wenn" Fälle sind zeitraubend und füllen unser Forum mit 80% Beiträgen, welche direkt in die Mülltonne wandern dürften. Ist doch egal was zuerst da war, ich weiß nur eines mit Sicherheit, es wird immer Fortschritte geben und die Erde dreht sich weiter.
#35
customavatars/avatar84710_1.gif
Registriert seit: 10.02.2008

Admiral
Beiträge: 15048
Ich befürchte du hast recht. ;)
#36
customavatars/avatar135030_1.gif
Registriert seit: 22.05.2010
Potsdam
Bootsmann
Beiträge: 640
Zitat Mick_Foley;21999869
Nein Mantle hat Microsoft so unter Druck gesetzt, dass sie betrügen und Schummeln müssen... :shot: :haha: :vrizz:


Betrügen und schummeln werden beide Firmen wohl zu genüge machen :vrizz:
Um Kommentare schreiben zu können, musst Du eingeloggt sein!

Das könnte Sie auch interessieren:

Von ASUS bis ZOTAC: Vier Modelle der GeForce GTX 1050 Ti im Test

Logo von IMAGES/STORIES/GALLERIES/REVIEWS/2016/NVIDIA-GTX1050TI-ROUNDUP/NVIDIA_GTX1050TI_4ER_ROUND_UP-TEASER

Seit Ende Oktober gibt es die aktuelle Pascal-Generation von NVIDIA auch für unter 200 Euro. Tatsächlich bekommt man hier nicht nur viel Leistung fürs Geld, sondern obendrein einen sehr effizienten 3D-Beschleuniger, wie unser Launch-Test zur NVIDIA GeForce GTX 1050 Ti pünktlich zum Marktstart... [mehr]

PowerColor Radeon RX 480 Red Devil im Test

Logo von IMAGES/STORIES/GALLERIES/REVIEWS/2016/POWERCOLOR-RX480/POWERCOLOR-RX480REDDEVIL-LOGO

Mit der Radeon RX 480 will AMD zurück zu alter Stärke und hat daher über Monate hinweg die PR-Trommel geschlagen. Letztendlich dabei herausgekommen ist eine sehr gute Karte für einen niedrigen Preis, die aber nicht in allen Bereichen zu überzeugen weiß. Wohl größtes Manko der Karte sollte... [mehr]

Drei Modelle der GeForce GTX 1060 von ASUS, EVGA und Inno3D im Test

Logo von IMAGES/STORIES/GALLERIES/REVIEWS/2016/3X-GTX1060-2/GTX1060_ROUNDUP2-TEASER

Nach einer kurzen Unterbrechung durch die AMD Radeon RX 470 und Radeon RX 460 machen wir weiter mit dem nächsten Schwung verschiedener Custom-Modelle zur NVIDIA GeForce GTX 1060. Während die Eigenlösungen der AMD-Partner teilweise noch immer auf sich warten lassen, ist man bei der Konkurrenz... [mehr]

Zwei Modelle der NVIDIA GeForce GTX 1050 Ti im Test

Logo von IMAGES/STORIES/GALLERIES/REVIEWS/2016/EVGA-GTX-1050TI-SC/EVGA_ZOTAC_GTX1050TI_AUFMACHER

Am vergangenen Dienstag rundete NVIDIA sein Pascal-Aufgebot nach unten hin ab und kündigte mit der GeForce GTX 1050 Ti und GeForce GTX 1050 die bislang kleinsten Ableger unter den Pascal-Grafikkarten an. Ab heute werden die neuen Einsteiger-Karten zu Preisen ab 125 bzw. 155 Euro im Handel... [mehr]

MSI GeForce GTX 1060 Gaming X im Test

Logo von IMAGES/STORIES/GALLERIES/REVIEWS/2016/MSI-GTX-1060-GAMING-X/MSI_GEFROCE_GTX_1060_GAMING_X-TEASER

Ob von ASUS, EVGA, Inno3D oder Gigabyte – von nahezu allen großen Grafikkarten-Herstellern konnten wir bereits ein oder mehrere Modelle auf Basis der GeForce GTX 1060 testen. Gefehlt in unserer Liste hat allerdings noch MSI. Das holen wir nun mit einem Test zur MSI GeForce GTX 1060 Gaming X... [mehr]

ASUS ROG Strix Radeon RX 480 im Test

Logo von IMAGES/STORIES/GALLERIES/REVIEWS/2016/ASUS-RX480/ASUS-RX480-LOGO

Nachdem wir uns bereits zwei Custom-Modelle der Radeon RX 480 abgeschaut haben, folgt heute das dritte Modell: Die ASUS ROG Strix Radeon RX 480. Große Erwartungen wurden an die bisherigen Custom-Modelle gesetzt, erfüllt werden konnten diese Erwartungen aber nur größtenteils, nicht vollends.... [mehr]