Share via


enumerazione D3D12_HEAP_TYPE (d3d12.h)

Specifica il tipo di heap. Quando risiede, gli heaps risiedono in un particolare pool di memoria fisica con determinate proprietà della cache della CPU.

Sintassi

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

Costanti

 
D3D12_HEAP_TYPE_DEFAULT
Valore: 1
Specifica l'heap predefinito. Questo tipo di heap sperimenta la larghezza di banda più elevata per la GPU, ma non può fornire l'accesso alla CPU. La GPU può leggere e scrivere nella memoria da questo pool e le barriere di transizione delle risorse possono essere modificate. La maggior parte degli heaps e delle risorse è prevista qui e viene in genere popolata tramite risorse in heaps di caricamento.
D3D12_HEAP_TYPE_UPLOAD
Valore: 2
Specifica un heap usato per il caricamento. Questo tipo di heap ha accesso alla CPU ottimizzato per il caricamento nella GPU, ma non riscontra la quantità massima di larghezza di banda per la GPU. Questo tipo di heap è ideale per i dati di tipo CPU-write-once, GPU-read-once; ma la GPU-read-once è più restrittiva di quanto necessario. GPU-read-once-or-from-cache è un caso d'uso accettabile per i dati; ma tali usi sono difficili da giudicare a causa di progetti e dimensioni della cache GPU diversi. In caso di dubbio, attenersi alla definizione di lettura gpu o profilare la differenza tra molte GPU tra la copia dei dati in un heap _DEFAULT e la lettura dei dati da un heap _UPLOAD.

Le risorse in questo heap devono essere create con D3D12_RESOURCE_STATE_GENERIC_READ e non possono essere modificate da questo. L'indirizzo della CPU per tali heaps in genere non è efficiente per le letture della CPU.

Di seguito sono riportati gli usi tipici per _UPLOAD heaps:

  • Inizializzazione delle risorse in un heap _DEFAULT con dati dalla CPU.

  • Caricamento di dati dinamici in un buffer costante letto, ripetutamente, da ogni vertice o pixel.



È probabile che i seguenti usi non siano validi per _UPLOAD heaps:

  • Inizializzare nuovamente il contenuto di una risorsa ogni frame.

  • Caricamento di dati costanti usati solo ogni altra chiamata Disegnare, in cui ogni disegno usa una quantità non semplice di altri dati.

D3D12_HEAP_TYPE_READBACK
Valore: 3
Specifica un heap usato per la lettura. Questo tipo di heap ha l'accesso alla CPU ottimizzato per la lettura dei dati dalla GPU, ma non riscontra la quantità massima di larghezza di banda per la GPU. Questo tipo di heap è ideale per i dati leggibili della GPU-write-once, CPU.This heap type is best for GPU-write-once, CPU-leggibile data. Il comportamento della cache della CPU è di tipo writeback, che è favorevole a più letture della CPU della cache secondaria.

Le risorse in questo heap devono essere create con D3D12_RESOURCE_STATE_COPY_DEST e non possono essere modificate da questo.
D3D12_HEAP_TYPE_CUSTOM
Valore: 4
Specifica un heap personalizzato. L'applicazione può specificare direttamente le proprietà del pool di memoria e della cache DELLA CPU, che possono essere utili per ottimizzazioni UMA, multi-engine, multi-adapter o altri casi speciali. A tale scopo, l'applicazione dovrebbe comprendere l'architettura dell'adattatore per fare la scelta giusta. Per altre informazioni, vedere

D3D12_FEATURE_ARCHITECTURE,
D3D12_FEATURE_DATA_ARCHITECTURE e
GetCustomHeapProperties.

Commenti

Questa enumerazione viene usata dagli elementi dell'API seguenti:

I tipi heap rientrano in due categorie: tipi heap astratti e tipi heap personalizzati.

Di seguito sono riportati tipi di heap astratti:

  • D3D12_HEAP_TYPE_DEFAULT
  • D3D12_HEAP_TYPE_UPLOAD
  • D3D12_HEAP_TYPE_READBACK
Di seguito è riportato un tipo di heap personalizzato:
  • D3D12_HEAP_TYPE_CUSTOM
I tipi heap astratti (_DEFAULT, _UPLOAD e _READBACK) sono utili per semplificare la scrittura di applicazioni di adattatore neutrali, perché tali applicazioni non devono essere consapevoli dell'architettura di memoria dell'adattatore. Per usare un tipo heap astratta per semplificare la scrittura di applicazioni adapter-neutral, l'applicazione considera essenzialmente l'adattatore come se fosse un adattatore discreto o NUMA. Tuttavia, l'uso dei tipi heap consente una traduzione efficiente per gli adattatori UMA. Le applicazioni neutrali dell'architettura dell'adattatore presuppongono che siano disponibili due pool di memoria, in cui il pool con la larghezza di banda della GPU più elevata non può fornire l'accesso alla CPU. Il pool con la larghezza di banda minima della GPU può avere accesso alla CPU; ma deve essere ottimizzato per il caricamento in GPU o readback dalla GPU.

Si noti che le trame (a differenza dei buffer) non possono essere di tipo heap UPLOAD o READBACK.

Requisiti

Requisito Valore
Intestazione d3d12.h

Vedi anche

Enumerazioni principali

Descrittore Heaps