Compartilhar via


Método ID3D11DeviceContext2::CopyTiles (d3d11_2.h)

Copia blocos do buffer para o recurso em bloco ou vice-versa.

Sintaxe

void CopyTiles(
  [in] ID3D11Resource                        *pTiledResource,
  [in] const D3D11_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
  [in] const D3D11_TILE_REGION_SIZE          *pTileRegionSize,
  [in] ID3D11Buffer                          *pBuffer,
  [in] UINT64                                BufferStartOffsetInBytes,
  [in] UINT                                  Flags
);

Parâmetros

[in] pTiledResource

Tipo: ID3D11Resource*

Um ponteiro para um recurso em bloco.

[in] pTileRegionStartCoordinate

Tipo: const D3D11_TILED_RESOURCE_COORDINATE*

Um ponteiro para uma estrutura D3D11_TILED_RESOURCE_COORDINATE que descreve as coordenadas iniciais do recurso em bloco.

[in] pTileRegionSize

Tipo: const D3D11_TILE_REGION_SIZE*

Um ponteiro para uma estrutura D3D11_TILE_REGION_SIZE que descreve o tamanho da região em bloco.

[in] pBuffer

Tipo: ID3D11Buffer*

Um ponteiro para um ID3D11Buffer que representa um buffer padrão, dinâmico ou de preparo.

[in] BufferStartOffsetInBytes

Tipo: UINT64

O deslocamento em bytes para o buffer em pBuffer para iniciar a operação.

[in] Flags

Tipo: UINT

Uma combinação de valores de tipo D3D11_TILE_COPY_FLAG que são combinados usando uma operação OR bit a bit e que identifica como copiar blocos.

Retornar valor

Nenhum

Comentários

CopyTiles descarta operações de gravação em áreas não mapeadas e manipula operações de leitura de áreas não mapeadas (exceto em Tier_1 recursos em bloco, em que a leitura e a gravação de áreas não mapeadas são inválidas).

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

Os blocos envolvidos na operação de cópia não podem incluir blocos que contêm mipmaps empacotados ou os resultados da operação de cópia são indefinidos. Para transferir dados de e para mipmaps que o hardware empacota para os blocos um ou mais que constituem os mips empacotados, você deve usar as APIs de cópia e atualização padrão (ou seja, não específicas do bloco) (como ID3D11DeviceContext1::CopySubresourceRegion1 e ID3D11DeviceContext1::UpdateSubresource1) ou ID3D11DeviceContext::GenerateMips para toda a cadeia de mipmap.

O layout de memória dos blocos no lado do recurso de buffer não em bloco da operação de cópia é linear na memória dentro de blocos de 64 KB, que o hardware e o driver giram e deswizzle por bloco, conforme apropriado, quando são transferidos de e para um recurso em bloco. Para superfícies msaa (suavização de várias amostras), o hardware e o driver atravessam os exemplos de cada pixel na ordem de índice de exemplo antes de passarem para o próximo pixel. Para blocos parcialmente preenchidos no lado direito (para uma superfície que tem uma largura que não é um múltiplo de largura de bloco em pixels), o tom e o passo a passo para mover para baixo uma linha é o tamanho total em bytes dos pixels numéricos que caberiam no bloco se o bloco estivesse cheio. Portanto, pode haver uma lacuna entre cada linha de pixels na memória. Mipmaps menores que um bloco não são empacotados juntos no layout linear, o que pode parecer um desperdício de espaço de memória, mas como mencionado, você não pode usar CopyTiles ou ID3D11DeviceContext2::UpdateTiles para copiar para mipmaps que o hardware empacota juntos. Basta usar APIs genéricas de cópia e atualização (como ID3D11DeviceContext1::CopySubresourceRegion1 e ID3D11DeviceContext1::UpdateSubresource1) para copiar mipmaps pequenos individualmente. Embora no caso de uma API de cópia genérica (como ID3D11DeviceContext1::CopySubresourceRegion1), a memória linear deve ser a mesma dimensão que o recurso em bloco; ID3D11DeviceContext1::CopySubresourceRegion1 não pode copiar de um recurso de buffer para um Texture2D, por exemplo.

Para obter mais informações sobre recursos em bloco, consulte Recursos em bloco.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8.1 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2012 R2 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho d3d11_2.h
Biblioteca D3D11.lib

Confira também

ID3D11DeviceContext2