ID3D12Device::GetCopyableFootprints, méthode (d3d12.h)
Obtient une disposition de ressource qui peut être copiée. Aide l’application à remplir D3D12_PLACED_SUBRESOURCE_FOOTPRINT et D3D12_SUBRESOURCE_FOOTPRINT lors de la sous-allocation d’espace dans les tas de chargement.
Syntaxe
void GetCopyableFootprints(
[in] const D3D12_RESOURCE_DESC *pResourceDesc,
[in] UINT FirstSubresource,
[in] UINT NumSubresources,
UINT64 BaseOffset,
[out, optional] D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
[out, optional] UINT *pNumRows,
[out, optional] UINT64 *pRowSizeInBytes,
[out, optional] UINT64 *pTotalBytes
);
Paramètres
[in] pResourceDesc
Type : const D3D12_RESOURCE_DESC*
Description de la ressource, en tant que pointeur vers une structure D3D12_RESOURCE_DESC .
[in] FirstSubresource
Type : UINT
Index de la première sous-ressource de la ressource. La plage de valeurs valides est comprise entre 0 et D3D12_REQ_SUBRESOURCES.
[in] NumSubresources
Type : UINT
Nombre de sous-ressources dans la ressource. La plage de valeurs valides est comprise entre 0 et (D3D12_REQ_SUBRESOURCES - FirstSubresource).
BaseOffset
Type : UINT64
Décalage, en octets, de la ressource.
[out, optional] pLayouts
Type : D3D12_PLACED_SUBRESOURCE_FOOTPRINT*
Pointeur vers un tableau (de longueur NumSubresources) de D3D12_PLACED_SUBRESOURCE_FOOTPRINT structures, à remplir avec la description et l’emplacement de chaque sous-ressource.
[out, optional] pNumRows
Type : UINT*
Pointeur vers un tableau (de longueur NumSubresources) de variables entières, à remplir avec le nombre de lignes pour chaque sous-ressource.
[out, optional] pRowSizeInBytes
Type : UINT64*
Pointeur vers un tableau (de longueur NumSubresources) de variables entières, chaque entrée à remplir avec la taille non pavée en octets d’une ligne, de chaque sous-ressource.
Par exemple, si une ressource Texture2D a une largeur de 32 et 4 octets par pixel,
puis pRowSizeInBytes retourne 128.
pRowSizeInBytes ne doit pas être confondu avec le pitch de ligne, car l’examen de pLayouts et l’obtention du pitch de ligne à partir de ce qui vous donnera 256 car il est aligné sur D3D12_TEXTURE_DATA_PITCH_ALIGNMENT.
[out, optional] pTotalBytes
Type : UINT64*
Pointeur vers une variable entière, à remplir avec la taille totale, en octets.
Valeur de retour
None
Notes
Cette routine aide l’application à remplir les structures D3D12_PLACED_SUBRESOURCE_FOOTPRINT et D3D12_SUBRESOURCE_FOOTPRINT , lors de la sous-allocation d’espace dans les tas de chargement. Les structures résultantes sont indépendantes de l’adaptateur GPU, ce qui signifie que les valeurs ne varient pas d’un adaptateur GPU à l’autre. GetCopyableFootprints utilise des détails spécifiés sur les formats de ressources, les dispositions de texture et les exigences d’alignement (de la structure D3D12_RESOURCE_DESC ) pour remplir les structures de sous-ressource. Les applications ayant accès à tous ces détails, cette méthode, ou une variante de celle-ci, peut être écrite dans le cadre de l’application.
Exemples
L’exemple D3D12Multithreading utilise ID3D12Device::GetCopyableFootprints comme suit :
// Returns required size of a buffer to be used for data upload
inline UINT64 GetRequiredIntermediateSize(
_In_ ID3D12Resource* pDestinationResource,
_In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources)
{
D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc();
UINT64 RequiredSize = 0;
ID3D12Device* pDevice;
pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast<void**>(&pDevice));
pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
pDevice->Release();
return RequiredSize;
}
Reportez-vous à l’exemple de code dans la référence D3D12.
Spécifications
Plateforme cible | Windows |
En-tête | d3d12.h |
Bibliothèque | D3d12.lib |
DLL | D3d12.dll |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour