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

# CopyTiles

> Copia blocos de um buffer para um recurso em blocos ou vice-versa. (ID3D12GraphicsCommandList.CopyTiles)

Copia blocos de um buffer para um recurso em blocos ou vice-versa.

## Sintaxe

```cpp theme={null}
void CopyTiles(
    ID3D12Resource  pTiledResource,
    const D3D12_TILED_RESOURCE_COORDINATE  pTileRegionStartCoordinate,
    const D3D12_TILE_REGION_SIZE  pTileRegionSize,
    ID3D12Resource  pBuffer,
    UINT64 BufferStartOffsetInBytes,
    D3D12_TILE_COPY_FLAGS Flags
)
```

### Parâmetros

*pTiledResource \[in]*\
Tipo: ID3D12Resource \*

Um ponteiro para um recurso em blocos.

*pTileRegionStartCoordinate \[in]*\
Tipo: const D3D12\_TILED\_RESOURCE\_COORDINATE \*

Um ponteiro para uma estrutura
[D3D12\_TILED\_RESOURCE\_COORDINATE](/pt-BR/reference/graphics/d3d12/structs/d3d12_tiled_resource_coordinate_public) que descreve as coordenadas iniciais do recurso em blocos.

*pTileRegionSize \[in]*\
Tipo: const D3D12\_TILE\_REGION\_SIZE \*

Um ponteiro para uma estrutura [D3D12\_TILE\_REGION\_SIZE](/pt-BR/reference/graphics/d3d12/structs/d3d12_tile_region_size_public) que descreve o tamanho da região em blocos.

*pBuffer \[in]*\
Tipo: ID3D12Resource \*

Um ponteiro para um [ID3D12Resource](/pt-BR/reference/graphics/d3d12_xs/interfaces/ID3D12Resource/id3d12resource_xs) que representa um buffer padrão, dinâmico ou de preparo.

*BufferStartOffsetInBytes*\
Tipo: UINT64

O deslocamento em bytes no buffer em <i>pBuffer</i> a partir do qual a operação será iniciada.

*Flags*\
Tipo: D3D12\_TILE\_COPY\_FLAGS

Uma combinação de valores do tipo [D3D12\_TILE\_COPY\_FLAGS](/pt-BR/reference/graphics/d3d12/enums/d3d12_tile_copy_flags_public) combinados por meio de uma operação OR bit a bit e que identifica como copiar os blocos.

### Valor retornado

Tipo: void

Nenhum.

## Comentários

**CopyTiles** descarta operações de gravação em
áreas não mapeadas e trata operações de leitura de áreas não mapeadas
(exceto em recursos em blocos de Tier\_1,
nos quais ler e gravar áreas não mapeadas é inválido; consulte [D3D12\_TILED\_RESOURCES\_TIER](/pt-BR/reference/graphics/d3d12/enums/d3d12_tiled_resources_tier_public)).

Se uma operação de cópia envolver gravar no mesmo local de memória várias vezes porque vários locais no
recurso de destino estão mapeados para a mesma memória de bloco, as operações de gravação resultantes em blocos com vários mapeamentos são
não determinísticas e não repetíveis; ou seja, os acessos à memória de bloco ocorrem na ordem em que o hardware
executar a operação de cópia.

Os blocos envolvidos na operação de cópia não podem incluir blocos que contêm mipmaps compactados; caso contrário, os resultados da operação de cópia
serão indefinidos. Para transferir dados de e para mipmaps que o hardware compacta em um ou mais blocos que constituem os mips compactados, você deve
usar as APIs de cópia padrão (ou seja, não específicas de blocos),
como [CopyTextureRegion](/pt-BR/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_copytextureregion_public).

**CopyTiles** copia dados em um padrão ligeiramente diferente dos métodos de cópia padrão.

O layout de memória dos blocos no lado do recurso de buffer não em blocos da operação de cópia é linear na memória dentro de blocos de 64 KB, que o hardware e o driver embaralham e desembaralham (swizzle/de-swizzle) por bloco conforme apropriado ao transferir de e para um recurso em blocos. Para superfícies com suavização de serrilhado de várias amostras (MSAA), o hardware e o driver percorrem as amostras de cada pixel na ordem do índice de amostra antes de passar para o próximo pixel. Para blocos parcialmente preenchidos no lado direito (para uma superfície cuja largura não é múltiplo da largura do bloco em pixels), o pitch e o stride para descer uma linha correspondem ao tamanho total em bytes do número de pixels que caberiam no bloco se ele estivesse cheio. Portanto, pode haver uma lacuna entre cada linha de pixels na memória. Mipmaps menores que um bloco não são compactados juntos no layout linear, o que pode parecer um desperdício de espaço de memória, mas, como mencionado, não é possível usar **CopyTiles** para copiar para mipmaps que o hardware compacta juntos. Você pode simplesmente usar APIs de cópia genéricas, como [CopyTextureRegion](/pt-BR/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_copytextureregion_public), para copiar mipmaps pequenos individualmente.

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

[ID3D12GraphicsCommandList](/pt-BR/reference/graphics/d3d12_xs/interfaces/ID3D12GraphicsCommandList/id3d12graphicscommandlist_xs)

[Recursos em blocos](https://learn.microsoft.com/en-us/windows/desktop/direct3d11/tiled-resources)


## Related topics

- [D3D12_TILE_COPY_FLAGS](/pt-BR/reference/graphics/d3d12/enums/d3d12_tile_copy_flags_public.md)
- [D3D12_TILE_REGION_SIZE](/pt-BR/reference/graphics/d3d12/structs/d3d12_tile_region_size_public.md)
- [D3D12_TILED_RESOURCE_COORDINATE](/pt-BR/reference/graphics/d3d12/structs/d3d12_tiled_resource_coordinate_public.md)
- [CopyTileMappings](/pt-BR/reference/graphics/d3d12/interfaces/id3d12commandqueue/methods/id3d12commandqueue_copytilemappings_public.md)
- [D3D12_TILE_MAPPING_FLAGS](/pt-BR/reference/graphics/d3d12/enums/d3d12_tile_mapping_flags_public.md)
