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 Singlethread-Effizienz, da Ihre Anwendung Renderingarbeit für die spätere Wiederverwendung vorab berechnen kann, und nutzt Systeme mit mehreren Kernen, indem Renderingarbeit auf mehrere Threads verteilt wird.

In diesem Abschnitt

Thema BESCHREIBUNG
Entwurfskonzeption von Befehlswarteschlangen und Befehlslisten Die Ziele, die Wiederverwendung von Renderingarbeit und Multithreadskalierung zu ermöglichen, erforderten grundlegende Änderungen an der Art und Weise, wie Direct3D-Apps Renderingarbeit an die GPU übermitteln.
Erstellen und Aufzeichnen von Befehlslisten und Paketen In diesem Thema wird die Aufzeichnung von Befehlslisten und Paketen in Direct3D 12-Apps beschrieben. Befehlslisten und Bündel ermöglichen Apps, Zeichnungs- oder zustandsverändernde Aufrufe für die spätere Ausführung auf der Grafikverarbeitungseinheit (GPU) aufzuzeichnen.
Ausführen und Synchronisieren von Befehlslisten In Microsoft Direct3D 12 ist der direkte Modus früherer Versionen nicht mehr vorhanden. Stattdessen erstellen Apps Befehlslisten und Bündel und zeichnen dann Sätze von GPU-Befehlen auf. Befehlswarteschlangen werden verwendet, um Befehlslisten zu übermitteln, die ausgeführt werden sollen. Mit diesem Modell können Entwickler mehr Kontrolle über die effiziente Nutzung von GPU und CPU haben.
Verwalten des Grafikpipelinezustands in Direct3D 12 In diesem Thema wird beschrieben, wie der Grafikpipelinezustand in Direct3D 12 festgelegt wird.
Verwenden von Ressourcenbarrieren zum Synchronisieren von Ressourcenzuständen in Direct3D 12 Um die CPU-Gesamtauslastung zu reduzieren und das Multithreading und die Vorverarbeitung des Treibers zu ermöglichen, verschiebt Direct3D 12 die Verantwortung für die Ressourcenzustandsverwaltung 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) Die Schattierung variabler Raten — oder die schattierte Pixelschattierung — ist ein Mechanismus, mit dem Sie rendering performance/power mit Raten zuordnen können, die sich je nach gerendertem Bild unterscheiden.
Renderdurchgänge Das Renderdurchläufe-Feature hilft Ihrem Renderer, die GPU-Effizienz zu verbessern, indem der Arbeitsspeicherdatenverkehr zum/vom Off-Chip-Arbeitsspeicher reduziert wird. Dies geschieht, indem Ihre Anwendung die Anforderungen an die Sortierung von Ressourcenrendering und Datenabhängigkeiten besser identifizieren kann.