D3D12_HEAP_FLAGS-Aufzählung (d3d12.h)
Gibt Heapoptionen an, z. B. ob der Heap Texturen enthalten kann und ob Ressourcen über Adapter hinweg freigegeben werden.
Syntax
typedef enum D3D12_HEAP_FLAGS {
D3D12_HEAP_FLAG_NONE = 0,
D3D12_HEAP_FLAG_SHARED = 0x1,
D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING,
D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
} ;
Konstanten
D3D12_HEAP_FLAG_NONE Wert: 0 Es werden keine Optionen angegeben. |
D3D12_HEAP_FLAG_SHARED Wert: 0x1 Der Heap wird geteilt. Weitere Informationen finden Sie unter freigegebenen Heaps. |
D3D12_HEAP_FLAG_DENY_BUFFERS Wert: 0x4 Der Heap darf keine Puffer enthalten. |
D3D12_HEAP_FLAG_ALLOW_DISPLAY Wert: 0x8 Der Heap darf Swapchainoberflächen enthalten. |
D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER Wert: 0x20 Der Heap darf Ressourcen über Adapter hinweg freigeben. Weitere Informationen finden Sie unter freigegebenen Heaps. Eine geschützte Sitzung kann nicht mit Ressourcen gemischt werden, die über Adapter hinweg freigegeben werden. |
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES Wert: 0x40 Der Heap darf Renderziel-Texturen (RT) und/oder Depth-Stencil (DS) nicht speichern. |
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES Wert: 0x80 Der Heap darf keine Ressourcen mit D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D oder D3D12_RESOURCE_DIMENSION_TEXTURE3D enthalten, es sei denn, D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET oder D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL sind vorhanden. Verweisen Sie auf D3D12_RESOURCE_DIMENSION und D3D12_RESOURCE_FLAGS. |
D3D12_HEAP_FLAG_HARDWARE_PROTECTED Wert: 0x100 Nicht unterstützt. Nicht verwenden. |
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH Wert: 0x200 Der Heap unterstützt MEM_WRITE_WATCH Funktionalität, wodurch das System die Seiten nachverfolgt, die in den zugesicherten Speicherbereich geschrieben werden. Dieses Kennzeichen kann nicht mit den D3D12_HEAP_TYPE_DEFAULT- oder D3D12_CPU_PAGE_PROPERTY_UNKNOWN Flags kombiniert werden. Anwendungen werden davon abgeraten, diese Kennzeichnung selbst zu verwenden, da sie verhindert, dass Tools diese Funktionalität verwenden. |
D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS Wert: 0x400 Stellt sicher, dass atome Operationen auf dem Speicher dieses Heaps atomieren werden, entsprechend Komponenten, die den Speicher sehen können. Das Erstellen eines Heaps mit dieser Kennzeichnung schlägt unter einer dieser Bedingungen fehl. - Der Heap-Typ ist D3D12_HEAP_TYPE_DEFAULT, und der Heap kann auf mehreren Knoten sichtbar sein, das Gerät unterstützt jedoch nicht D3D12_CROSS_NODE_SHARING_TIER_3. - Der Heap ist CPU-sichtbar, der Heaptyp ist jedoch nichtD3D12_HEAP_TYPE_CUSTOM. Beachten Sie, dass Heaps mit diesem Kennzeichen möglicherweise eine begrenzte Ressource auf einigen Systemen sind. |
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT Wert: 0x800 Der Heap wird in einem nicht ansässigen Zustand erstellt und muss mit ID3D12Device::MakeResident oder ID3D12Device3::EnqueueMakeResident. Standardmäßig besteht der letzte Schritt der Heap-Erstellung darin, den Heap-Resident zu machen, sodass dieses Flag diesen Schritt überspringt und die Anwendung entscheiden kann, wann dies der Fall ist. |
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED Wert: 0x1000 Ermöglicht es dem Betriebssystem, den erstellten Heap nicht null zu haben. Standardmäßig werden zugesicherte Ressourcen und Heaps bei der Erstellung fast immer nulliert. Mit dieser Kennzeichnung kann dies in einigen Szenarien entfernt werden. Sie garantiert sie jedoch nicht. So muss beispielsweise speicherfrei aus anderen Prozessen für datenschutz- und prozessisoliert werden. Dies kann den Aufwand für die Erstellung des Heaps verringern. |
D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES Wert: 0 Der Heap darf alle Typen von Puffern und/oder Texturen speichern. Dies ist ein Alias; weitere Informationen finden Sie unter "Aliase" im Abschnitt "Hinweise". |
D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS Wert: 0xc0 Der Heap darf nur Puffer speichern. Dies ist ein Alias; weitere Informationen finden Sie unter "Aliase" im Abschnitt "Hinweise". |
D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES Wert: 0x44 Der Heap darf nur Nicht-RT-, Nicht-DS-Texturen speichern. Dies ist ein Alias; weitere Informationen finden Sie unter "Aliase" im Abschnitt "Hinweise". |
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES Wert: 0x84 Der Heap darf RT- und/oder DS-Texturen nur speichern. Dies ist ein Alias; weitere Informationen finden Sie unter "Aliase" im Abschnitt "Hinweise". |
Bemerkungen
Diese Enumeration wird von den folgenden API-Elementen verwendet:
Die folgenden Heap-Flags müssen mit ID3D12Device::CreateHeap-verwendet werden, werden jedoch automatisch für implizite Heaps festgelegt, die von ID3D12Device::CreateCommittedResourceerstellt werden. Adapter, die nur Heap-Stufe 1 unterstützen, müssen zwei der drei folgenden Flags festlegen.Wert | Beschreibung |
---|---|
D3D12_HEAP_FLAG_DENY_BUFFERS | Der Heap darf keine Ressourcen mit D3D12_RESOURCE_DIMENSION_BUFFER enthalten (eine D3D12_RESOURCE_DIMENSION Enumerationskonstante). |
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES | Der Heap darf keine Ressourcen mit D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D oder D3D12_RESOURCE_DIMENSION_TEXTURE3D zusammen mit D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET oder D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL enthalten. (Letztere zwei Elemente sind D3D12_RESOURCE_FLAGS Enumerationskonstanten.) |
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES | Der Heap darf keine Ressourcen mit D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D oder D3D12_RESOURCE_DIMENSION_TEXTURE3D enthalten, es sei denn, D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET und D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL fehlen. |
Aliase
Adapter, die Heap-Ebene 2 oder höher unterstützen, dürfen zusätzlich keines der obigen Flags festlegen. Aliase für diese Flags sind für Anwendungen verfügbar, die nur überlegen, welche Ressourcen unterstützt werden.Die folgenden Aliase sind vorhanden. Achten Sie daher beim Ausführen von Bitmanipulationen darauf:
- D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0 und wird nur auf Heap-Ebene 2 und höher unterstützt.
- D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES | D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
- D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = D3D12_HEAP_FLAG_DENY_BUFFERS | D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES
- D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = D3D12_HEAP_FLAG_DENY_BUFFERS | D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
Anzeigefähige Heaps
Anzeigefähige Heaps werden am häufigsten von der Swapchain für die Präsentation erstellt, um das Scannen auf einem Monitor zu ermöglichen.Anzeigefähige Heaps werden mit dem D3D12_HEAP_FLAG_ALLOW_DISPLAY Member der D3D12_HEAP_FLAGS Enumeration angegeben.
Anwendungen können anzeigefähige Heaps außerhalb einer Swapchain erstellen; kann aber nicht tatsächlich mit ihnen anwesend sein. Dieses Flag wird von CreateHeap- nicht unterstützt und kann nur mit CreateCommittedResource- mit D3D12_HEAP_TYPE_DEFAULT verwendet werden.
Zusätzliche Einschränkungen für die D3D12_RESOURCE_DESC gelten für die Ressource, die mit anzeigefähigen Heaps erstellt wurde.
- Das Format darf nicht nur vom Gerät unterstützt werden, sondern muss für das Scannen unterstützt werden. Verweisen Sie auf die Verwendung des D3D12_FORMAT_SUPPORT1_DISPLAY Mitglieds von D3D12_FORMAT_SUPPORT1.
- Dimension muss D3D12_RESOURCE_DIMENSION_TEXTURE2D sein.
- Ausrichtung muss 0 sein.
- ArraySize- kann entweder 1 oder 2 sein.
- MipLevels- muss 1 sein.
- SampleDesc- muss Count auf 1 und Quality auf 0 festgelegt sein.
- Layout- muss D3D12_TEXTURE_LAYOUT_UNKNOWN sein.
- D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL und D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER sind ungültige Flags.
Anforderungen
Anforderung | Wert |
---|---|
Header- | d3d12.h |