D3D12_HEAP_TYPE-Aufzählung (d3d12.h)
Gibt den Typ des Heaps an. Wenn sie ansässig sind, befinden sich Heaps in einem bestimmten physischen Speicherpool mit bestimmten CPU-Cacheeigenschaften.
Syntax
typedef enum D3D12_HEAP_TYPE {
D3D12_HEAP_TYPE_DEFAULT = 1,
D3D12_HEAP_TYPE_UPLOAD = 2,
D3D12_HEAP_TYPE_READBACK = 3,
D3D12_HEAP_TYPE_CUSTOM = 4,
D3D12_HEAP_TYPE_GPU_UPLOAD
} ;
Konstanten
D3D12_HEAP_TYPE_DEFAULT Wert: 1 Gibt den Standardhap an. Dieser Heaptyp hat die größte Bandbreite für die GPU, kann jedoch keinen CPU-Zugriff bereitstellen. Die GPU kann aus diesem Pool in den Speicher lesen und schreiben, und Ressourcenübergangsbarrieren können geändert werden. Die mehrzahl der Heaps und Ressourcen wird erwartet, dass sie sich hier befinden und normalerweise über Ressourcen in Upload heaps aufgefüllt werden. |
D3D12_HEAP_TYPE_UPLOAD Wert: 2 Gibt einen Heap an, der für das Hochladen verwendet wird. Dieser Heap-Typ verfügt über cpu-Zugriff, der für das Hochladen in die GPU optimiert ist, aber nicht die maximale Bandbreite für die GPU aufweist. Dieser Heap-Typ eignet sich am besten für CPU-Write-once-GPU-Read-once-Daten; gpu-read-once ist jedoch strenger als nötig. GPU-Read-once-or-from-cache ist ein akzeptabler Anwendungsfall für die Daten; solche Verwendungen sind jedoch aufgrund unterschiedlicher GPU-Cachedesigns und -größen schwer zu beurteilen. Behalten Sie im Zweifel die GPU-Read-once-Definition bei oder profilieren Sie den Unterschied bei vielen GPUs zwischen dem Kopieren der Daten in einen _DEFAULT Heap im Vergleich zum Lesen der Daten aus einem _UPLOAD Heap. Ressourcen in diesem Heap müssen mit D3D12_RESOURCE_STATE_GENERIC_READ erstellt werden und können nicht geändert werden. Die CPU-Adresse für solche Heaps ist in der Regel nicht effizient für CPU-Lesevorgänge. Im Folgenden sind typische Verwendungen für _UPLOAD Heaps aufgeführt:
Im Folgenden werden wahrscheinlich keine guten Verwendungen für _UPLOAD Heaps verwendet:
|
D3D12_HEAP_TYPE_READBACK Wert: 3 Gibt einen Heap an, der zum Zurücklesen verwendet wird. Dieser Heap-Typ verfügt über einen CPU-Zugriff, der für das Lesen von Daten aus der GPU optimiert ist, aber nicht die maximale Bandbreite für die GPU aufweist. Dieser Heap-Typ eignet sich am besten für gpu-write-once, CPU-lesbare Daten. Das CPU-Cacheverhalten ist schreibgeschützt, was für mehrere CPU-Lesevorgänge zwischen Cachezeilen geeignet ist. Ressourcen in diesem Heap müssen mit D3D12_RESOURCE_STATE_COPY_DEST erstellt werden und können nicht geändert werden. |
D3D12_HEAP_TYPE_CUSTOM Wert: 4 Gibt einen benutzerdefinierten Heap an. Die Anwendung kann die Speicherpool- und CPU-Cacheeigenschaften direkt angeben, was für UMA-Optimierungen, Multimodul-, Multiadapter- oder andere Sonderfälle nützlich sein kann. Dazu wird erwartet, dass die Anwendung die Adapterarchitektur versteht, um die richtige Wahl zu treffen. Weitere Details finden Sie unter D3D12_FEATURE_ARCHITECTURE, D3D12_FEATURE_DATA_ARCHITECTUREund GetCustomHeapProperties. |
Bemerkungen
Diese Enumeration wird von den folgenden API-Elementen verwendet:
Die Heaptypen sind in zwei Kategorien unterteilt: abstrahierte Heaptypen und benutzerdefinierte Heaptypen.Es folgen abstrahierte Heaptypen:
- D3D12_HEAP_TYPE_DEFAULT
- D3D12_HEAP_TYPE_UPLOAD
- D3D12_HEAP_TYPE_READBACK
- D3D12_HEAP_TYPE_CUSTOM
Beachten Sie, dass Texturen (im Gegensatz zu Puffern) nicht heaptyp UPLOAD oder READBACK sein können.
Anforderungen
Anforderung | Wert |
---|---|
Header- | d3d12.h |