Condividi tramite


Copia dei descrittori

I ID3D12Device::CopyDescriptors e ID3D12Device::CopyDescriptorsSimple nell'interfaccia del dispositivo usano la CPU per copiare immediatamente i descrittori. Possono essere chiamati thread liberi purché più thread nella CPU o nella GPU non eseguano scritture potenzialmente in conflitto.

Copiare immediatamente i descrittori (cronologia CPU)

Il numero di descrittori di origine (da copiare), specificato come set di intervalli di descrittori, deve corrispondere al numero di descrittori di destinazione (da copiare), specificato come set separato di intervalli di descrittori. Gli intervalli di origine e di destinazione non devono altrimenti essere allineati. Ad esempio, un set di descrittori raro potrebbe essere copiato in una destinazione contigua, viceversa o in una combinazione.

Nell'operazione di copia possono essere coinvolti più heap di descrittore, sia come origine che come destinazione. L'uso di handle del descrittore come parametri significa che i metodi di copia non si preoccupano degli heap in cui si trova un descrittore specifico, in quanto sono tutte soltanto memoria.

I tipi di heap descrittori copiati da e verso devono essere identici, pertanto i metodi accettano un singolo tipo di heap descrittore come parametro di input. Il driver deve conoscere il tipo di heap di tutti i descrittori nell'operazione di copia specificata, in modo da conoscere le dimensioni dei dati coinvolte nell'operazione di copia. Il driver potrebbe anche dover eseguire operazioni di copia personalizzate se un determinato tipo di heap descrittore lo garantisce, ovvero un dettaglio di implementazione. Nota che i descrittori non identificano da soli il tipo a cui puntano; pertanto, per l'operazione di copia è necessario un parametro aggiuntivo.

Viene fornita un'API alternativa a CopyDescriptors per il semplice caso di copia di un singolo intervallo di descrittori da una posizione a un'altra, CopyDescriptorsSimple.

Per questi metodi di copia del descrittore basati su dispositivo (sequenza temporale CPU), i descrittori di origine devono provenire da un heap del descrittore non visibile allo shader. I descrittori di destinazione possono trovarsi in qualsiasi heap descrittore visibile alla CPU, cioè visibile o meno agli shader.

Descrittori