Copia di descrittori

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

Copia immediata dei descrittori (sequenza temporale 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 in caso contrario essere allineati. Ad esempio, un set sparse di descrittori può essere copiato in una destinazione contigua, viceversa o in una combinazione.

Più heaps descrittori possono essere coinvolti nell'operazione di copia, sia come origine che come destinazione. L'uso di handle del descrittore come parametri significa che i metodi di copia non si preoccupano di quale heaps qualsiasi descrittore specificato si trova in : sono tutti solo memoria.

I tipi heap descrittori copiati da e devono corrispondere, pertanto i metodi accettano un singolo tipo heap descrittore come input. Il driver deve conoscere il tipo heap di tutti i descrittori nell'operazione di copia specificata, quindi sa quali dimensioni dei dati sono coinvolti nell'operazione di copia. Il driver potrebbe anche dover eseguire operazioni di copia personalizzate se un determinato tipo heap descrittore lo garantisce – un dettaglio dell'implementazione. Si noti che il descrittore gestisce se stessi non identifica in caso contrario il tipo a cui puntano; pertanto, è necessario un parametro aggiuntivo per l'operazione di copia.

Un'API alternativa a CopyDescriptors viene fornita 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 basato su dispositivo (sequenza temporale CPU), i descrittori di origine devono venire da un heap visibile non shader. I descrittori di destinazione possono essere in qualsiasi heap descrittore visibile alla CPU (visibile o meno).

Descrittori