Partager via


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

Voir aussi

Copie de descripteurs

ID3D12Device