enumerazione D3D12_HEAP_FLAGS (d3d12.h)

Specifica le opzioni dell'heap, ad esempio se l'heap può contenere trame e se le risorse vengono condivise tra adapter.

Sintassi

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
} ;

Costanti

 
D3D12_HEAP_FLAG_NONE
Valore: 0
Nessuna opzione specificata.
D3D12_HEAP_FLAG_SHARED
Valore: 0x1
L'heap è condiviso. Fare riferimento a heap condivisi.
D3D12_HEAP_FLAG_DENY_BUFFERS
Valore: 0x4
L'heap non può contenere buffer.
D3D12_HEAP_FLAG_ALLOW_DISPLAY
Valore: 0x8
L'heap può contenere superfici a catena di scambio.
D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER
Valore: 0x20
L'heap può condividere le risorse tra gli adapter. Fare riferimento a heap condivisi. Una sessione protetta non può essere combinata con risorse condivise tra schede.
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES
Valore: 0x40
L'heap non è autorizzato a archiviare le trame di destinazione di rendering (RT) e/o Depth-Stencil (DS).
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
Valore: 0x80
L'heap non può contenere risorse con D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D o D3D12_RESOURCE_DIMENSION_TEXTURE3D a meno che non siano presenti D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET o D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL. Fare riferimento a D3D12_RESOURCE_DIMENSION e D3D12_RESOURCE_FLAGS.
D3D12_HEAP_FLAG_HARDWARE_PROTECTED
Valore: 0x100
Non confermato. Non usare.
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH
Valore: 0x200
L'heap supporta MEM_WRITE_WATCH funzionalità, che determina il rilevamento delle pagine scritte nell'area di memoria di cui è stato eseguito il commit. Questo flag non può essere combinato con i flag D3D12_HEAP_TYPE_DEFAULT o D3D12_CPU_PAGE_PROPERTY_UNKNOWN. Le applicazioni sono sconsigliate dall'uso di questo flag perché impedisce agli strumenti di usare questa funzionalità.
D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS
Valore: 0x400
Assicura che le operazioni atomica saranno atomice sulla memoria dell'heap, in base ai componenti in grado di visualizzare la memoria.

La creazione di un heap con questo flag avrà esito negativo in una di queste condizioni.
- Il tipo di heap è D3D12_HEAP_TYPE_DEFAULTe l'heap può essere visibile in più nodi, ma il dispositivo non supporta D3D12_CROSS_NODE_SHARING_TIER_3.
- L'heap è visibile dalla CPU, ma il tipo di heap è nonD3D12_HEAP_TYPE_CUSTOM.

Si noti che gli heap con questo flag potrebbero essere una risorsa limitata in alcuni sistemi.
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT
Valore: 0x800
L'heap viene creato in uno stato non residente e deve essere reso residente usando ID3D12Device::MakeResident o ID3D12Device3::EnqueueMakeResident.

Per impostazione predefinita, il passaggio finale della creazione dell'heap consiste nel rendere residente l'heap, quindi questo flag ignora questo passaggio e consente all'applicazione di decidere quando farlo.
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED
Valore: 0x1000
Consente al sistema operativo di non zero l'heap creato. Per impostazione predefinita, le risorse di cui è stato eseguito il commit e gli heap sono quasi sempre zero al momento della creazione. Questo flag consente di eseguire l'elide in alcuni scenari. Tuttavia, non lo garantisce. Ad esempio, la memoria proveniente da altri processi deve comunque essere zero per la protezione dei dati e l'isolamento dei processi. Ciò può ridurre il sovraccarico della creazione dell'heap.
D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES
Valore: 0
L'heap può archiviare tutti i tipi di buffer e/o trame. Questo è un alias; per altri dettagli, vedere "Alias" nella sezione Osservazioni.
D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS
Valore: 0xc0
L'heap può archiviare solo i buffer. Questo è un alias; per altri dettagli, vedere "Alias" nella sezione Osservazioni.
D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES
Valore: 0x44
L'heap può archiviare solo trame non RT e non DS. Questo è un alias; per altri dettagli, vedere "Alias" nella sezione Osservazioni.
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES
Valore: 0x84
L'heap può archiviare solo trame RT e/o DS. Questo è un alias; per altri dettagli, vedere "Alias" nella sezione Osservazioni.

Osservazioni

Questa enumerazione viene usata dagli elementi dell'API seguenti:

I flag heap seguenti devono essere usati con ID3D12Device::CreateHeap, ma verranno impostati automaticamente per gli heap impliciti creati da ID3D12Device::CreateCommittedResource. Gli adattatori che supportano solo livello heap 1 devono impostare due dei tre flag seguenti.
Valore Descrizione
D3D12_HEAP_FLAG_DENY_BUFFERS L'heap non può contenere risorse con D3D12_RESOURCE_DIMENSION_BUFFER (ovvero una costante di enumerazione D3D12_RESOURCE_DIMENSION).
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES L'heap non può contenere risorse con D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D o D3D12_RESOURCE_DIMENSION_TEXTURE3D insieme a D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET o D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL. Gli ultimi due elementi sono D3D12_RESOURCE_FLAGS costanti di enumerazione.
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES L'heap non può contenere risorse con D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D o D3D12_RESOURCE_DIMENSION_TEXTURE3D a meno che D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET e D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL non siano assenti.

alias

Gli adattatori che supportano livello heap 2 o versione successiva possono anche impostare nessuno dei flag precedenti. Gli alias per questi flag sono disponibili per le applicazioni che preferiscono pensare solo alle risorse supportate.

Esistono gli alias seguenti, quindi prestare attenzione quando si eseguono manipolazioni di bit:

  • D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0 ed è supportato solo in livello heap 2 e versioni successive.
  • 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

heap visualizzabili

Gli heap visualizzabili vengono creati più comunemente dalla porta di scambio per la presentazione, per consentire l'analisi a un monitor.

Gli heap visualizzabili vengono specificati con il membro D3D12_HEAP_FLAG_ALLOW_DISPLAY dell'enumerazione D3D12_HEAP_FLAGS.

Le applicazioni possono creare heap visualizzabili all'esterno di una porta di scambio; ma non può presentarsi con loro. Questo flag non è supportato da CreateHeap e può essere usato solo con CreateCommittedResource con D3D12_HEAP_TYPE_DEFAULT.

Le restrizioni aggiuntive per il D3D12_RESOURCE_DESC si applicano alla risorsa creata con heap visualizzabili.

  • Il formato non deve essere supportato solo dal dispositivo, ma deve essere supportato per l'analisi. Fare riferimento all'uso del membro D3D12_FORMAT_SUPPORT1_DISPLAY di D3D12_FORMAT_SUPPORT1.
  • dimensione deve essere D3D12_RESOURCE_DIMENSION_TEXTURE2D.
  • allineamento deve essere 0.
  • ArraySize può essere 1 o 2.
  • MipLevels deve essere 1.
  • SampleDesc deve avere Count impostato su 1 e Quality impostato su 0.
  • layout deve essere D3D12_TEXTURE_LAYOUT_UNKNOWN.
  • D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL e D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER sono flag non validi.

Fabbisogno

Requisito Valore
intestazione d3d12.h

Vedere anche

CD3DX12_HEAP_DESC

core enumerationi

heap descrittore