Share via


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 schede.

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
Non è stata specificata alcuna opzione.
D3D12_HEAP_FLAG_SHARED
Valore: 0x1
L'heap è condiviso. Fare riferimento a Heaps condivisi.
D3D12_HEAP_FLAG_DENY_BUFFERS
Valore: 0x4
L'heap non è consentito 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 è autorizzato a condividere le risorse tra schede. Fare riferimento a Heaps condivisi. Una sessione protetta non può essere mista con le risorse condivise tra schede.
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES
Valore: 0x40
L'heap non è consentito archiviare trame di destinazione di rendering (RT) e/o Depth-Stencil (DS).
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
Valore: 0x80
L'heap non è consentito 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 supportato. Non usare.
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH
Valore: 0x200
L'heap supporta MEM_WRITE_WATCH funzionalità, che causa la traccia delle pagine scritte nell'area di memoria di commit. Questo flag non può essere combinato con i flag D3D12_HEAP_TYPE_DEFAULT o D3D12_CPU_PAGE_PROPERTY_UNKNOWN. Le applicazioni sono scoraggiate 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 heap è D3D12_HEAP_TYPE_DEFAULT e l'heap può essere visibile in più nodi, ma il dispositivo non supporta D3D12_CROSS_NODE_SHARING_TIER_3.
- L'heap è visibile alla CPU, ma il tipo heap non è D3D12_HEAP_TYPE_CUSTOM.

Si noti che gli heaps 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 e gli heaps di commit sono quasi sempre zero alla creazione. Questo flag consente di eseguire l'elide in alcuni scenari. Tuttavia, non garantisce. Ad esempio, la memoria proveniente da altri processi deve essere ancora zero per la protezione dei dati e l'isolamento dei processi. Questo 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. Si tratta di un alias; per altre informazioni, vedere "Alias" nella sezione Osservazioni.
D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS
Valore: 0xc0
L'heap è consentito solo per archiviare i buffer. Si tratta di un alias; per altre informazioni, vedere "Alias" nella sezione Osservazioni.
D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES
Valore: 0x44
L'heap è consentito solo per archiviare trame non RT, non DS. Si tratta di un alias; per altre informazioni, vedere "Alias" nella sezione Osservazioni.
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES
Valore: 0x84
L'heap è consentito solo per archiviare trame RT e/o DS. Si tratta di un alias; per altre informazioni, vedere "Alias" nella sezione Osservazioni.

Commenti

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 heaps impliciti creati da ID3D12Device::CreateCom commitResource. Gli adattatori che supportano solo il livello heap 1 devono impostare due dei tre flag seguenti.
Valore Descrizione
D3D12_HEAP_FLAG_DENY_BUFFERS L'heap non è consentito 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 è consentito 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 costanti di enumerazione D3D12_RESOURCE_FLAGS.
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES L'heap non è consentito 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 siano assenti.

Alias

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

Gli alias seguenti esistono, quindi prestare attenzione quando si eseguono manipolazioni bit:

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

Heaps visualizzabili

Gli heaps visualizzabili vengono creati più comunemente dalla swapchain per la presentazione, per abilitare l'analisi in un monitoraggio.

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

Le applicazioni possono creare heaps visualizzabili all'esterno di una swapchain; ma non può effettivamente presentare con loro. Questo flag non è supportato da CreateHeap e può essere usato solo con CreateCommittedResource con D3D12_HEAP_TYPE_DEFAULT.

Restrizioni aggiuntive per il D3D12_RESOURCE_DESC si applicano alla risorsa creata con heaps 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.
  • La dimensione deve essere D3D12_RESOURCE_DIMENSION_TEXTURE2D.
  • L'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.
  • Il layout deve essere D3D12_TEXTURE_LAYOUT_UNKNOWN.
  • D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL e D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER sono flag non validi.

Requisiti

Requisito Valore
Intestazione d3d12.h

Vedi anche

CD3DX12_HEAP_DESC

Enumerazioni principali

Descrittore Heaps