Online-Abo
  • Login
  • Registrieren
Games World
      • Von Locuza Lötkolbengott/-göttin
        Zitat von I3uschi

        Aber ja, für mich wäre einfacher, einfach einfacher.
        Wer englisch lesen kann, kann sich hier eine grobe Zusammenfassung durchlesen:
        DirectX 12 - Looking back at GDC 2015 and a year of amazing progress - DirectX Developer Blog - Site Home - MSDN Blogs

        Folgende "Features" gibt es für eine bessere GPU-Performance:

        Explicit resource transitions:

        Das war die Sache mit den UAV-Barriers.
        UAV = Unordered Access Views.

        Grob gesagt, unter DX11 mussten Pausen eingefügt werden, damit State-Wechsel/Zugriffe auf die Ressourcen immer in einer festen Reihenfolge ausgeführt werden.
        Das DX12 Modell sieht vor, dass der Entwickler es hier selber definiert.
        Dadurch muss der Treiber nicht zwangsweise Dinge garantieren, sondern die App selber.
        Richtig ausgeführt führt es dazu, dass man sich viele eingefügten Zwangspausen sparen kann, wenn man dem Treiber einfach garantiert das während der Zeit nicht auf die Ressourcen zugegriffen wird.

        Die Sache hat bei dem Fable-Legends Beispiel 20% gebracht.

        Multi-Engine:

        Die ALUs von GPUs führen Arbeiten durch, die in eine Arbeitsschlange gepackt werden, in Queues.
        Der Command-Processor ist dafür zuständig, dass die Arbeiten an die ALUs verteilt werden.
        Damals gab es praktisch nur 3D-Queues, mit modernen APIs gibt es auch Compute-Queues.
        Das Problem an dieser Stelle ist, dass man nicht parallel mehrere Queues verschicken konnte, eben bis jetzt mit DX12. (Und andere moderne APIs)
        Bei alten APIs müssen Compute und 3D Aufgaben in eine Queue gepackt werden, da gibt es Abhängigkeiten, es geschieht alles in einer gewissen Reihenfolge.
        Viel cooler wäre es natürlich wenn man Compute und 3D unabhängig an die ALUs verschicken könnte und das ganze asynchron berechnet wird.

        Um so etwas zu ermöglichen hat AMD z.B. ACEs (asynchronous compute engines) in ihre Hardware verbaut.
        Dadurch kann AMD neben 3D Queues, parallel auch Compute-Queues verschicken.

        Neben 3D und Compute kann die GPU natürlich auch andere Aufgaben erledigen, z.B. Speicherzugriffe.
        Mit DMA-Engines (Direct Memory Access) kannst auch noch das ganze parallel gestalten.

        An dieser Stelle habe ich das Beispiel mit dem PS4 exklusivem Spiel gebracht, welches ihr Lightning durch Compute berechnet und dank async compute rund 20% Performance gewonnen hat.
        Das ganze muss aber natürlich designen.

        AMD steht da gut da, Intel hat keine Hardware die mehrere Queues gleichzeitig abschicken kann.
        Intels bisheriger Hardware bringt es also gar nichts, ob man mehrere Queues hat oder alle Aufgaben in eine Queue packt, muss so oder nacheinander verteilt werden.
        Intel hat aber eine DMA-Engine, sie geben allerdings einschränkend zu, dass diese langsam ist.

        Nvidia hat Hyper-Q, grob das gleiche wie AMDs ACEs, bloß gab es dieses Feature nur beim GK110 und man gibt zwar an, dass jede Maxwell GPU es auch hat, aber da fehlen Infos, welche Beschränkungen es gibt.
        Wie viele Queues können verteilt werden etc.

        ExecuteIndirect:

        Soweit ich es verstanden habe, kann man mit einem API-Befehl dadurch mehrere Draw-Calls auf einmal ausführen lassen.
        Normalerweise muss die CPU jedes mal der GPU sagen, was sie als nächstes tun soll.
        Mit ExecuteIndirect bekommt man die Möglichkeit, welche wieder nur zur Verfügung steht wenn man gewisse Dinge passend anordnet, durch einen Befehl der GPU praktisch eine Liste zu ergeben.
        Die GPU kann dann für eine gewisse Sachen unabhängig von der CPU weiter Sachen ausführen.
        Das entlastet stark die CPU, hilft aber auch der GPU ~10% beim Asteroiden Beispiel. (Intel Hardware)

        Dann gab es noch die Sache mit Bindless.
        Bei alter Hardware wurden Ressourcen immer fest angebunden, wolltest du mehr Ressourcen nutzen musstest du alte erst entbinden etc.
        GCN arbeitet intern z.B. immer bindless, es gibt keine binding-slots, allerdings arbeitet DX11 immer noch so, als müssten Ressourcen gebunden werden.
        Intels Hardware konnte dadurch rund 10% gewinnen.

        Das war ungefähr grob das, was ich verstanden habe.
      • Von borni Software-Overclocker(in)
        Zitat von Laggy.NET
        Die 10% beziehen sich auf das Zusammenspiel von CPU und GPU. Höchstwahrscheinlich war das Game GPU limitiert.

        DX12 zielt aber hauptsächlich auf die CPU Performance ab. Die hat im GPU limit eben nur wenig bis gar keine Auswirkungen.
        Positiv ist halt, dass wir unsere CPUs in Zukunft wahrscheinlich deutlich seltener aufrüsten müssen, da sind dann wirklich Performance Gewinne von 50-100% Möglich, je nach Spiel eben. Wie viele Jahre eine CPU in Zukunft ausreicht, wenn sagen wir mal BF4 statt 80% CPU Last nur noch 40% Last erzeugt kannst du dir ja dann gut vorstellen.

        Direkt an den FPS wird sich DX12 nur bemerkbar machen, wenn das Spiel unter DX11 CPU limitiert war.

        Natürlich könnten die Entwickler die freigewordene CPU performance auch nutzen, um mehr Objekte und höhere Weitsicht zu ermöglichen. Wodurch sich der Vorteil der Kostenersparnis wieder relativiert. Man muss aber auch bedenken, dass die Konsolen CPU Seitig nicht so gut bestück sind. Sprich das Spieldesign wird sich die nächsten Jahre überwiegend an den Möglichkeiten der Konsolen CPU orientieren und wir freuen uns, dass in den meisten Games bald mit etwas Glück sogar ein i3 für 60+ FPS ausreichend ist....
        Da man heute beim zocken mit einem 5 Jahre alten 2600K noch locker hin kommt, brauchen wir wohl die nächsten 10 Jahre nicht mehr aufrüsten...
      • Von I3uschi Freizeitschrauber(in)
        Zitat von Locuza
        Falls man mehr verstehen möchte, ich kann es natürlich weiter ausführen und vielleicht leichter erklären, ohne Garantie auf Richtigkeit.
        Nuja, bin mir nicht sicher ob ich der einzige bin mit ??? über dem Kopf, ist ja ein Forum für Leute mit deutlich mehr Ahnung als meine Wenigkeit.
        Aber ja, für mich wäre einfacher, einfach einfacher.

        Ich lese immer gerne mit, bin auch wissbegierig, aber du hast gerade den Vogel abgeschossen. Jetzt komme ich mir richtig dumm vor
      • Von Locuza Lötkolbengott/-göttin
        Falls man mehr verstehen möchte, ich kann es natürlich weiter ausführen und vielleicht leichter erklären, ohne Garantie auf Richtigkeit.
      • Von I3uschi Freizeitschrauber(in)
        Zitat von Locuza
        ...
        Durch Bindless Ressources und ExecuteIndirect konnte z.B. in einer vorgeführten Asteroiden Demo von Intel, jeweils 10% gewonnen werden.
        Das eingebettete Video von Fable Legends in diesem Artikel gewinnt 20% im GPU-Limit durch UAV Barriers.
        Zusätzlich bietet DX12 das Modell Multi-Engine, womit man insgesamt 3 unabhängige Datenströme generieren kann, im Gegensatz zu einem Datenstrom unter DX11.
        Graphics, Compute und Copy.

        AMDs GCN GPUs haben dank den ACEs mehrere Compute-Queues die sie verteilen können und ein paar DMA-Engines für Copy-Vorgänge.
        Das kann richtig programmiert und angepasst ordentlich viel Leistung im GPU-Limit bei Radeon-GPUs bringen.
        Z.B. das PS4 exklusive Spiel The Tomorrow Children kann durch async compute bis zu 20% an Leistung im GPU-Limit erreichen.
        ...
        Haha ^^ Wie geil ist das denn? Ich habe so gut wie nix verstanden... das liegt aber sicherlich nicht an dir. ;D

        ... ... ...

        Hoppla, darf ich das überhaupt zugeben?
  • Print / Abo
    Apps
    PC Games Hardware 01/2017 PC Games 12/2016 PC Games MMore 01/2016 play³ 12/2016 Games Aktuell 12/2016 buffed 12/2016 XBG Games 11/2016
    PCGH Magazin 01/2017 PC Games 12/2016 PC Games MMORE Computec Kiosk On the Run! Birdies Run
article
1152960
DirectX 12
AMD und Nvidia zu DirectX 12: "Top-Titel sehen generell besser aus"
20 Jahre nach DirectX 1 erscheint in diesem Jahr DirectX 12. Microsofts neueste Programmierschnittstelle soll anspruchsvolle 3D-Grafikberechung und -ausgabe gewaltig verbessern. Auf der Game Developers Conference waren erste Spiele mit der neuen Schnittstelle zu sehen.
http://www.pcgameshardware.de/DirectX-12-Software-255525/Specials/Microsofts-neue-Programmierschnittstelle-auf-der-GDC-1152960/
09.03.2015
http://www.pcgameshardware.de/screenshots/medium/2015/03/GDC_DX12_001-pcgh_b2teaser_169.JPG
specials