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

Atualizações blocos copiando da memória do aplicativo para o recurso em bloco.

Sintaxe

void UpdateTiles(
  [in] ID3D11Resource                        *pDestTiledResource,
  [in] const D3D11_TILED_RESOURCE_COORDINATE *pDestTileRegionStartCoordinate,
  [in] const D3D11_TILE_REGION_SIZE          *pDestTileRegionSize,
  [in] const void                            *pSourceTileData,
  [in] UINT                                  Flags
);

Parâmetros

[in] pDestTiledResource

Tipo: ID3D11Resource*

Um ponteiro para um recurso em bloco a ser atualizado.

[in] pDestTileRegionStartCoordinate

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] pDestTileRegionSize

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] pSourceTileData

Tipo: const void*

Um ponteiro para a memória que contém os dados de bloco de origem que UpdateTiles usa para atualizar o recurso em bloco.

[in] Flags

Tipo: UINT

Uma combinação de valores do tipo D3D11_TILE_COPY_FLAG que são combinados usando uma operação OR bit a bit. O único valor válido é D3D11_TILE_COPY_NO_OVERWRITE. Os outros valores não são significativos aqui, embora, por definição, o valor D3D11_TILE_COPY_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE seja basicamente o que UpdateTiles faz, mas fontes da memória do aplicativo.

Valor retornado

Nenhum

Comentários

UpdateTiles descarta operações de gravação em áreas não mapeadas (exceto em Tier_1 recursos em bloco, em que a gravação em áreas não mapeadas é inválida).

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 em um bloco, 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 dados no lado de origem 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 ID3D11DeviceContext2::CopyTiles ou 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

   
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