ID3D12Device ::CopyDescriptors, méthode (d3d12.h)
Copie les descripteurs d’une source vers une destination.
Syntaxe
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
);
Paramètres
[in] NumDestDescriptorRanges
Type : UINT
Nombre de plages de descripteurs de destination à copier.
[in] pDestDescriptorRangeStarts
Type : const D3D12_CPU_DESCRIPTOR_HANDLE*
Tableau d’objets D3D12_CPU_DESCRIPTOR_HANDLE à copier.
Tous les descripteurs de destination et de source doivent être dans des tas du même D3D12_DESCRIPTOR_HEAP_TYPE.
[in, optional] pDestDescriptorRangeSizes
Type : const UINT*
Tableau de tailles de plage de descripteur de destination vers laquelle copier.
[in] NumSrcDescriptorRanges
Type : UINT
Nombre de plages de descripteurs sources à partir de laquelle effectuer la copie.
[in] pSrcDescriptorRangeStarts
Type : const D3D12_CPU_DESCRIPTOR_HANDLE*
Tableau d’objets D3D12_CPU_DESCRIPTOR_HANDLE à partir duquel copier.
Important
Tous les éléments du paramètre pSrcDescriptorRangeStarts doivent se trouver dans un tas de descripteur non visible par le nuanceur. Cela est dû au fait que des tas de descripteurs visibles par le nuanceur peuvent être créés dans WRITE_COMBINE mémoire ou mémoire locale GPU, ce qui est trop lent à lire. Si votre application gère les tas de descripteurs en copiant les descripteurs requis pour une passe ou une trame donnée à partir de tas de descripteurs de « stockage » locaux vers le tas de descripteur lié au GPU, utilisez des tas opaques de nuanceur pour les tas de stockage et copiez-les dans le tas visible par GPU si nécessaire.
[in, optional] pSrcDescriptorRangeSizes
Type : const UINT*
Tableau de tailles de plage de descripteurs sources à partir de laquelle effectuer la copie.
[in] DescriptorHeapsType
Type : D3D12_DESCRIPTOR_HEAP_TYPE
Valeur de type D3D12_DESCRIPTOR_HEAP_TYPE qui spécifie le type de tas de descripteur à copier. Cela est nécessaire, car différents types de descripteurs peuvent avoir des tailles différentes.
Les tas de descripteurs source et de destination doivent avoir le même type, sinon la couche de débogage émet une erreur.
Valeur de retour
None
Remarques
Le cas échéant, préférez ID3D12Device ::CopyDescriptorsSimple à cette méthode. Il peut avoir un meilleur taux d’absence du cache du processeur en raison de la nature linéaire de la copie.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | d3d12.h |
Bibliothèque | D3D12.lib |
DLL | D3D12.dll |