Sottoallocation all'interno dei buffer
I buffer hanno tutte le funzionalità necessarie in D3D12 per le applicazioni per trasferire una vasta gamma di dati temporanei dalla CPU alla GPU. Questa sezione illustra quattro scenari comuni per l'uso e la gestione delle risorse e dei buffer.
Analogamente a D3D11, le applicazioni in D3D12 devono comunque dichiarare l'utilizzo della memoria durante l'allocazione dei buffer in D3D12 rispetto alle risorse dinamiche/staging in D3D11, ma in D3D12 gli sviluppatori hanno maggiore flessibilità e maggiore controllo sull'utilizzo della memoria. I buffer, tramite suballocation, dispongono di tutte le funzionalità necessarie per la gestione della memoria a basso livello.
Contenuto della sezione
Argomento | Descrizione |
---|---|
Caricamento di diversi tipi di risorse |
Illustra come usare un buffer per caricare i dati del buffer costante e i dati del buffer dei vertici nella GPU e come eseguire correttamente l'allocazione e l'inserimento dei dati all'interno dei buffer. L'uso di un singolo buffer aumenta la flessibilità di utilizzo della memoria e offre alle applicazioni un controllo più stretto dell'utilizzo della memoria. Mostra anche le differenze tra i modelli D3D11 e D3D12 per caricare diversi tipi di risorse. |
Caricamento dei dati della trama tramite buffer |
Il caricamento di dati di trama 2D o 3D è simile al caricamento di dati 1D, ad eccezione del fatto che le applicazioni devono prestare maggiore attenzione all'allineamento dei dati correlato al passo delle righe. I buffer possono essere usati in modo ortogonale e simultaneo da più parti della pipeline grafica e sono molto flessibili. |
Leggere i dati tramite un buffer |
La lettura dei dati dalla GPU, ad esempio l'acquisizione di uno screenshot, comporta l'uso dell'heap Readback. |
Gestione delle risorse basata su recinto |
Illustra come gestire l'intervallo di vita dei dati delle risorse monitorando lo stato di avanzamento della GPU tramite recinzioni. La memoria può essere usata in modo efficace con recinzioni che gestiscono attentamente la disponibilità di spazio libero in memoria, ad esempio in un'implementazione del buffer anello per un heap di caricamento. |