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

Siehe auch

CD3DX12_HEAP_DESC

Core Enumerations

Deskriptor Heaps