Sintaxe
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 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 que descreve o tamanho da região em blocos. pBuffer [in]
Tipo: ID3D12Resource * Um ponteiro para um ID3D12Resource que representa um buffer padrão, dinâmico ou de preparo. BufferStartOffsetInBytes
Tipo: UINT64 O deslocamento em bytes no buffer em pBuffer 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 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). 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. 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, para copiar mipmaps pequenos individualmente.Requisitos
Cabeçalho: d3d12_xs.h ou d3d12_x.hBiblioteca: d3d12_xs.lib ou d3d12_x.lib
Plataformas com suporte: consoles XBOX Series e família XBOX One
