Unterzuweisung innerhalb von Puffern

Puffer verfügen über alle Features, die in D3D12 erforderlich sind, damit Anwendungen einen großen Bereich vorübergehender Daten von der CPU auf die GPU übertragen können. In diesem Abschnitt werden vier gängige Szenarien für die Verwendung und Verwaltung von Ressourcen und Puffern behandelt.

Ähnlich wie bei D3D11 müssen Anwendungen in D3D12 die Speicherauslastung beim Zuordnen von Puffern in D3D12 im Vergleich zu dynamischen/Stagingressourcen in D3D11 deklarieren, aber in D3D12 haben Entwickler mehr Flexibilität und eine strengere Kontrolle über die Speicherauslastung. Puffer verfügen über die Untergeordneten Speicherzuweisungen über alle Features, die für die Speicherverwaltung auf niedriger Ebene erforderlich sind.

In diesem Abschnitt

Thema BESCHREIBUNG
Hochladen verschiedener Arten von Ressourcen
Zeigt, wie Sie einen Puffer verwenden, um sowohl konstante Pufferdaten als auch Scheitelpunktpufferdaten auf die GPU hochzuladen, und wie Sie Daten ordnungsgemäß unterteilen und in Puffern platzieren. Die Verwendung eines einzelnen Puffers erhöht die Flexibilität bei der Speicherauslastung und bietet Anwendungen eine strengere Steuerung der Speicherauslastung. Zeigt auch die Unterschiede zwischen den Modellen D3D11 und D3D12 zum Hochladen verschiedener Ressourcentypen an.
Hochladen von Texturdaten über Puffer
Das Hochladen von 2D- oder 3D-Texturdaten ähnelt dem Hochladen von 1D-Daten, mit der Ausnahme, dass Anwendungen die Datenausrichtung im Zusammenhang mit der Zeilenhöhe genauer beachten müssen. Puffer können orthogonal und gleichzeitig aus mehreren Teilen der Grafikpipeline verwendet werden und sind sehr flexibel.
Zurücklesen von Daten über einen Puffer
Das Zurücklesen von Daten von der GPU, z. B. das Erfassen eines Screenshots, umfasst die Verwendung des Rückleseheaps.
Fence-basierte Ressourcenverwaltung
Zeigt, wie Die Lebensdauer von Ressourcendaten durch Nachverfolgen des GPU-Fortschritts über Umgrenzungen verwaltet wird. Arbeitsspeicher kann effektiv mit Zäunen wiederverwendet werden, um die Verfügbarkeit des freien Speicherplatzes im Arbeitsspeicher sorgfältig zu verwalten, z. B. in einer Ringpufferimplementierung für einen Hochladen Heap.

Speicherverwaltung