> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GetCopyableFootprints

> Obtient une disposition de ressource pouvant être copiée. Aide l'application à renseigner D3D12_PLACED_SUBRESOURCE_FOOTPRINT et D3D12_SUBRESOURCE_FOOTPRINT lors de la sous-allocation d'espace.

Obtient une disposition de ressource pouvant être copiée.
Aide l'application à renseigner
[D3D12\_PLACED\_SUBRESOURCE\_FOOTPRINT](/fr/reference/graphics/d3d12/structs/d3d12_placed_subresource_footprint_public) et
[D3D12\_SUBRESOURCE\_FOOTPRINT](/fr/reference/graphics/d3d12/structs/d3d12_subresource_footprint_public) lors de la sous-allocation d'espace dans les tas de chargement.

## Syntaxe

```cpp theme={null}
void GetCopyableFootprints(
    const D3D12_RESOURCE_DESC  pResourceDesc,
    UINT FirstSubresource,
    UINT NumSubresources,
    UINT64 BaseOffset,
    D3D12_PLACED_SUBRESOURCE_FOOTPRINT  pLayouts,
    UINT  pNumRows,
    UINT64  pRowSizeInBytes,
    UINT64  pTotalBytes
)
```

### Paramètres

*pResourceDesc \[in]*\
Type : const D3D12\_RESOURCE\_DESC \*

Description de la ressource, sous la forme d'un pointeur vers une structure [D3D12\_RESOURCE\_DESC](/fr/reference/graphics/d3d12/structs/d3d12_resource_desc_public).

*FirstSubresource \[in]*\
Type : UINT

Index de la première sous-ressource de la ressource.
La plage de valeurs valides va de 0 à D3D12\_REQ\_SUBRESOURCES.

*NumSubresources \[in]*\
Type : UINT

Nombre de sous-ressources de la ressource. La plage de valeurs valides va de 0 à (D3D12\_REQ\_SUBRESOURCES - <i>FirstSubresource</i>).

*BaseOffset*\
Type : UINT64

Décalage, en octets, de la ressource.

*pLayouts \[out, optional]*\
Type : D3D12\_PLACED\_SUBRESOURCE\_FOOTPRINT \*

Pointeur vers un tableau (de longueur <i>NumSubresources</i>) de structures
[D3D12\_PLACED\_SUBRESOURCE\_FOOTPRINT](/fr/reference/graphics/d3d12/structs/d3d12_placed_subresource_footprint_public), à remplir avec la description et le placement de chaque sous-ressource.

*pNumRows \[out, optional]*\
Type : UINT \*

Pointeur vers un tableau (de longueur <i>NumSubresources</i>) de variables entières, à remplir avec le nombre de lignes de chaque sous-ressource.

*pRowSizeInBytes \[out, optional]*\
Type : UINT64 \*

Pointeur vers un tableau (de longueur <i>NumSubresources</i>) de variables entières, chaque entrée devant être remplie avec la taille sans remplissage, 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,

<i>pRowSizeInBytes</i> retourne 128.

<i>pRowSizeInBytes</i> ne doit pas être confondu avec le **pas de ligne** (row pitch) : en examinant <i>pLayouts</i> et en obtenant le pas de ligne à partir de celui-ci, vous obtiendrez 256, car il est aligné sur D3D12\_TEXTURE\_DATA\_PITCH\_ALIGNMENT.

*pTotalBytes \[out, optional]*\
Type : UINT64 \*

Pointeur vers une variable entière, à remplir avec la taille totale, en octets.


### Valeur de retour

Type : void

Aucune.

## Remarques

Cette routine aide l'application à renseigner les structures
[D3D12\_PLACED\_SUBRESOURCE\_FOOTPRINT](/fr/reference/graphics/d3d12/structs/d3d12_placed_subresource_footprint_public) et
[D3D12\_SUBRESOURCE\_FOOTPRINT](/fr/reference/graphics/d3d12/structs/d3d12_subresource_footprint_public) lors de la sous-allocation d'espace dans les tas de chargement.
Les structures obtenues sont indépendantes de l'adaptateur GPU, ce qui signifie que les valeurs ne varient pas d'un adaptateur GPU à l'autre.
**GetCopyableFootprints** utilise les détails spécifiés concernant les formats de ressource, les dispositions de texture et les exigences d'alignement (provenant de la structure [D3D12\_RESOURCE\_DESC](/fr/reference/graphics/d3d12/structs/d3d12_resource_desc_public)) pour renseigner les structures de sous-ressources.
Les applications ont accès à tous ces détails ; cette méthode, ou une variante, pourrait donc être écrite au sein de l'application.

#### Exemples

L'exemple [D3D12Multithreading](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/working-samples) utilise **ID3D12Device::GetCopyableFootprints** comme suit :

```cpp theme={null}
// 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 à [Exemple de code dans la référence D3D12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/notes-on-example-code).

<div class="code" />

## Configuration requise

**En-tête :** d3d12\_xs.h ou d3d12\_x.h\
**Bibliothèque :** d3d12\_xs.lib ou d3d12\_x.lib\
**Plateformes prises en charge :** consoles XBOX Series et famille XBOX One

## Voir aussi

[CD3DX12\_RESOURCE\_DESC](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/cd3dx12-resource-desc)

[CD3DX12\_SUBRESOURCE\_FOOTPRINT](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/cd3dx12-subresource-footprint)

[ID3D12Device](/fr/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [D3D12_PLACED_SUBRESOURCE_FOOTPRINT](/fr/reference/graphics/d3d12/structs/d3d12_placed_subresource_footprint_public.md)
- [D3D12_SUBRESOURCE_FOOTPRINT](/fr/reference/graphics/d3d12/structs/d3d12_subresource_footprint_public.md)
- [D3D12_TEXTURE_COPY_TYPE](/fr/reference/graphics/d3d12/enums/d3d12_texture_copy_type_public.md)
- [D3D12_TEXTURE_COPY_LOCATION](/fr/reference/graphics/d3d12/structs/d3d12_texture_copy_location_public.md)
- [Get Segments](/api-reference/segments/get-segments.md)
