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. |