Arbeitsübermittlung in Direct3D 12

Um die CPU-Effizienz von Direct3D-Apps zu verbessern, unterstützt Direct3D ab Version 12 keinen unmittelbaren Kontext mehr, der einem Gerät zugeordnet ist. Stattdessen zeichnet Ihre Anwendung Befehlslisten auf und übermittelt sie dann, die Zeichnungs- und Ressourcenverwaltungsaufrufe enthalten. Sie können diese Befehlslisten aus mehreren Threads an eine oder mehrere Befehlswarteschlangen übermitteln, die die Ausführung der Befehle verwalten. Diese grundlegende Änderung erhöht die Effizienz von Singlethreads, da Ihre Anwendung renderingarbeiten für die spätere Wiederverwendung vorab berechnen kann, und nutzt die Vorteile von Multi-Core-Systemen, indem sie Renderingarbeit auf mehrere Threads verteilt.

In diesem Abschnitt

Thema Beschreibung
Entwurfsphilosophie von Befehlswarteschlangen und Befehlslisten Die Ziele, die Wiederverwendung von Renderingarbeiten und der Multithreadskalierung zu ermöglichen, erforderten grundlegende Änderungen an der Art und Weise, wie Direct3D-Apps Rendering an die GPU übermitteln.
Erstellen und Aufzeichnen von Befehlslisten und Paketen In diesem Thema werden Die Aufzeichnung von Befehlslisten und Bundles in Direct3D 12-Apps beschrieben. Befehlslisten und -bundles ermöglichen Apps das Aufzeichnen von Zeichnungs- oder Zustandsänderungsaufrufen für die spätere Ausführung auf der Grafikverarbeitungseinheit (GPU).
Ausführen und Synchronisieren von Befehlslisten In Microsoft Direct3D 12 ist der unmittelbare Modus früherer Versionen nicht mehr vorhanden. Stattdessen erstellen Apps Befehlslisten und Bundles und zeichnen dann Sätze von GPU-Befehlen auf. Befehlswarteschlangen werden verwendet, um Befehlslisten zu übermitteln, die ausgeführt werden sollen. Dieses Modell ermöglicht Es Entwicklern, mehr Kontrolle über die effiziente Nutzung von GPU und CPU zu haben.
Verwalten des Zustands der Grafikpipeline in Direct3D 12 In diesem Thema wird beschrieben, wie der Zustand der Grafikpipeline in Direct3D 12 festgelegt wird.
Verwenden von Ressourcenbarrieren zum Synchronisieren von Ressourcenzuständen in Direct3D 12 Um die gesamte CPU-Auslastung zu reduzieren und Treiber-Multithreading und -Vorverarbeitung zu ermöglichen, verschiebt Direct3D 12 die Verantwortung für die Verwaltung des Ressourcenstatus vom Grafiktreiber auf die Anwendung.
Pipelines und Shader mit Direct3D 12 Die programmierbare Direct3D 12-Pipeline erhöht die Renderingleistung im Vergleich zu Grafikprogrammierschnittstellen der vorherigen Generation erheblich.
Schattierung mit variabler Rate (VRS) Schattierung mit variabler Rate – oder grobe Pixelschattierung – ist ein Mechanismus, mit dem Sie Renderingleistung/Leistung mit Raten zuordnen können, die je nach gerendertem Bild variieren.
Renderdurchgänge Das Renderdurchläufe-Feature hilft Ihrem Renderer, die GPU-Effizienz zu verbessern, indem der Arbeitsspeicherdatenverkehr zu/vom Off-Chip-Speicher reduziert wird. Dies geschieht, indem Sie Ihre Anwendung in die Lage versetzen, Die Anforderungen an die Reihenfolge und Datenabhängigkeiten von Ressourcenrendering besser zu identifizieren.