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 |