Metodo ID3D12Device::CopyDescriptors (d3d12.h)

Copia i descrittori da un'origine a una destinazione.

Sintassi

void CopyDescriptors(
  [in]           UINT                              NumDestDescriptorRanges,
  [in]           const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
  [in, optional] const UINT                        *pDestDescriptorRangeSizes,
  [in]           UINT                              NumSrcDescriptorRanges,
  [in]           const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
  [in, optional] const UINT                        *pSrcDescriptorRangeSizes,
  [in]           D3D12_DESCRIPTOR_HEAP_TYPE        DescriptorHeapsType
);

Parametri

[in] NumDestDescriptorRanges

Tipo: UINT

Numero di intervalli di descrittori di destinazione da copiare.

[in] pDestDescriptorRangeStarts

Tipo: const D3D12_CPU_DESCRIPTOR_HANDLE*

Matrice di oggetti D3D12_CPU_DESCRIPTOR_HANDLE in cui eseguire la copia.

Tutti i descrittori di destinazione e di origine devono trovarsi negli heap dello stesso D3D12_DESCRIPTOR_HEAP_TYPE.

[in, optional] pDestDescriptorRangeSizes

Tipo: const UINT*

Matrice di dimensioni dell'intervallo del descrittore di destinazione in cui eseguire la copia.

[in] NumSrcDescriptorRanges

Tipo: UINT

Numero di intervalli di descrittori di origine da cui copiare.

[in] pSrcDescriptorRangeStarts

Tipo: const D3D12_CPU_DESCRIPTOR_HANDLE*

Matrice di oggetti D3D12_CPU_DESCRIPTOR_HANDLE da cui eseguire la copia.

Importante

Tutti gli elementi nel parametro pSrcDescriptorRangeStarts devono trovarsi in un heap del descrittore non visibile a shader. Ciò è dovuto al fatto che gli heap del descrittore visibile allo shader possono essere creati in WRITE_COMBINE memoria o nella memoria locale della GPU, che è proibitivamente lenta da leggere. Se l'applicazione gestisce gli heap del descrittore tramite la copia dei descrittori necessari per un determinato passaggio o frame dall'heap del descrittore locale "storage" all'heap del descrittore associato a GPU, usare gli heap shader-opachi per gli heap di archiviazione e copiare nell'heap visibile alla GPU in base alle esigenze.

[in, optional] pSrcDescriptorRangeSizes

Tipo: const UINT*

Matrice di dimensioni dell'intervallo del descrittore di origine da cui copiare.

[in] DescriptorHeapsType

Tipo: D3D12_DESCRIPTOR_HEAP_TYPE

Valore tipizzato D3D12_DESCRIPTOR_HEAP_TYPE che specifica il tipo di heap del descrittore da copiare. Questa operazione è necessaria in quanto tipi di descrittore diversi possono avere dimensioni diverse.

Gli heap del descrittore di origine e di destinazione devono avere lo stesso tipo. In caso contrario, il livello di debug genererà un errore.

Valore restituito

nessuno

Osservazioni

Se applicabile, preferire ID3D12Device::CopyDescriptorsSimple a questo metodo. Può avere una migliore frequenza di mancati riscontri nella cache della CPU a causa della natura lineare della copia.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d12.h
Libreria D3D12.lib
DLL D3D12.dll

Vedi anche

Copia di descrittori

ID3D12Device