> ## 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

> Obtém um layout de recurso que pode ser copiado. Ajuda o aplicativo a preencher D3D12_PLACED_SUBRESOURCE_FOOTPRINT e D3D12_SUBRESOURCE_FOOTPRINT ao subalocar espaço.

Obtém um layout de recurso que pode ser copiado.
Ajuda o aplicativo a preencher
[D3D12\_PLACED\_SUBRESOURCE\_FOOTPRINT](/pt-BR/reference/graphics/d3d12/structs/d3d12_placed_subresource_footprint_public) e
[D3D12\_SUBRESOURCE\_FOOTPRINT](/pt-BR/reference/graphics/d3d12/structs/d3d12_subresource_footprint_public) ao subalocar espaço em heaps de upload.

## Sintaxe

```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
)
```

### Parâmetros

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

Uma descrição do recurso, como um ponteiro para uma estrutura [D3D12\_RESOURCE\_DESC](/pt-BR/reference/graphics/d3d12/structs/d3d12_resource_desc_public).

*FirstSubresource \[in]*\
Tipo: UINT

Índice do primeiro sub-recurso no recurso.
O intervalo de valores válidos é de 0 a D3D12\_REQ\_SUBRESOURCES.

*NumSubresources \[in]*\
Tipo: UINT

O número de sub-recursos no recurso. O intervalo de valores válidos é de 0 a (D3D12\_REQ\_SUBRESOURCES - <i>FirstSubresource</i>).

*BaseOffset*\
Tipo: UINT64

O deslocamento, em bytes, até o recurso.

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

Um ponteiro para uma matriz (de comprimento <i>NumSubresources</i>) de estruturas
[D3D12\_PLACED\_SUBRESOURCE\_FOOTPRINT](/pt-BR/reference/graphics/d3d12/structs/d3d12_placed_subresource_footprint_public), a ser preenchida com a descrição e o posicionamento de cada sub-recurso.

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

Um ponteiro para uma matriz (de comprimento <i>NumSubresources</i>) de variáveis inteiras, a ser preenchida com o número de linhas de cada sub-recurso.

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

Um ponteiro para uma matriz (de comprimento <i>NumSubresources</i>) de variáveis inteiras, em que cada entrada será preenchida com o tamanho sem preenchimento, em bytes, de uma linha de cada sub-recurso.

Por exemplo, se um recurso Texture2D tiver largura de 32 e 4 bytes por pixel,

então <i>pRowSizeInBytes</i> retornará 128.

<i>pRowSizeInBytes</i> não deve ser confundido com **row pitch** (passo da linha), pois examinar <i>pLayouts</i> e obter o passo da linha a partir dele fornecerá 256, já que ele é alinhado a D3D12\_TEXTURE\_DATA\_PITCH\_ALIGNMENT.

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

Um ponteiro para uma variável inteira, a ser preenchida com o tamanho total, em bytes.

### Valor retornado

Tipo: void

Nenhum.

## Comentários

Esta rotina ajuda o aplicativo a preencher as estruturas
[D3D12\_PLACED\_SUBRESOURCE\_FOOTPRINT](/pt-BR/reference/graphics/d3d12/structs/d3d12_placed_subresource_footprint_public) e
[D3D12\_SUBRESOURCE\_FOOTPRINT](/pt-BR/reference/graphics/d3d12/structs/d3d12_subresource_footprint_public) ao subalocar espaço em heaps de upload.
As estruturas resultantes são independentes do adaptador de GPU, o que significa que os valores não variam de um adaptador de GPU para outro.
**GetCopyableFootprints** usa detalhes especificados sobre formatos de recursos, layouts de textura e requisitos de alinhamento (da estrutura [D3D12\_RESOURCE\_DESC](/pt-BR/reference/graphics/d3d12/structs/d3d12_resource_desc_public)) para preencher as estruturas de sub-recursos.
Os aplicativos têm acesso a todos esses detalhes, portanto, este método, ou uma variação dele, poderia ser escrito como parte do aplicativo.

#### Exemplos

O exemplo [D3D12Multithreading](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/working-samples) usa **ID3D12Device::GetCopyableFootprints** da seguinte maneira:

```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;
}

```

Consulte o [Código de exemplo na referência do D3D12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/notes-on-example-code).

<div class="code" />

## Requisitos

**Cabeçalho:** d3d12\_xs.h ou d3d12\_x.h\
**Biblioteca:** d3d12\_xs.lib ou d3d12\_x.lib\
**Plataformas com suporte**: consoles XBOX Series e família XBOX One

## Confira também

[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](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [D3D12_PLACED_SUBRESOURCE_FOOTPRINT](/pt-BR/reference/graphics/d3d12/structs/d3d12_placed_subresource_footprint_public.md)
- [D3D12_SUBRESOURCE_FOOTPRINT](/pt-BR/reference/graphics/d3d12/structs/d3d12_subresource_footprint_public.md)
- [D3D12_TEXTURE_COPY_TYPE](/pt-BR/reference/graphics/d3d12/enums/d3d12_texture_copy_type_public.md)
- [D3D12_TEXTURE_COPY_LOCATION](/pt-BR/reference/graphics/d3d12/structs/d3d12_texture_copy_location_public.md)
- [Introdução ao empacotamento MSIXVC2 para PC](/pt-BR/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC-msixvc2.md)
