Método ID3D12GraphicsCommandList::CopyTiles (d3d12.h)
Copia iconos del búfer en un recurso en mosaico o viceversa.
Sintaxis
void CopyTiles(
[in] ID3D12Resource *pTiledResource,
[in] const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
[in] const D3D12_TILE_REGION_SIZE *pTileRegionSize,
[in] ID3D12Resource *pBuffer,
UINT64 BufferStartOffsetInBytes,
D3D12_TILE_COPY_FLAGS Flags
);
Parámetros
[in] pTiledResource
Tipo: ID3D12Resource*
Puntero a un recurso en mosaico.
[in] pTileRegionStartCoordinate
Tipo: const D3D12_TILED_RESOURCE_COORDINATE*
Puntero a una estructura de D3D12_TILED_RESOURCE_COORDINATE que describe las coordenadas iniciales del recurso en mosaico.
[in] pTileRegionSize
Tipo: const D3D12_TILE_REGION_SIZE*
Puntero a una estructura de D3D12_TILE_REGION_SIZE que describe el tamaño de la región en mosaico.
[in] pBuffer
Tipo: ID3D12Resource*
Puntero a un id3D12Resource que representa un búfer predeterminado, dinámico o de almacenamiento provisional.
BufferStartOffsetInBytes
Tipo: UINT64
Desplazamiento en bytes en el búfer en pBuffer para iniciar la operación.
Flags
Tipo: D3D12_TILE_COPY_FLAGS
Combinación de valores con tipo D3D12_TILE_COPY_FLAGS que se combinan mediante una operación OR bit a bit e identifica cómo copiar iconos.
Valor devuelto
None
Observaciones
CopyTiles quita las operaciones de escritura en áreas no asignadas y controla las operaciones de lectura de áreas no asignadas (excepto en Tier_1 recursos en mosaico, donde las áreas no asignadas de lectura y escritura no son válidas; consulte D3D12_TILED_RESOURCES_TIER).
Si una operación de copia implica escribir en la misma ubicación de memoria varias veces porque varias ubicaciones del recurso de destino se asignan a la misma memoria de mosaico, las operaciones de escritura resultantes en mosaicos multiasignados son no deterministas y no repetibles; es decir, los accesos a la memoria del icono se producen en cualquier orden en que el hardware se ejecute la operación de copia.
Los iconos implicados en la operación de copia no pueden incluir iconos que contengan mapas mip empaquetados o los resultados de la operación de copia no están definidos. Para transferir datos hacia y desde mapas mip que el hardware empaqueta en los iconos uno o varios que constituyen los mips empaquetados, debe usar las API de copia estándar (es decir, no específicas del icono), como CopyTextureRegion.
CopyTiles copia datos en un patrón ligeramente diferente al de los métodos de copia estándar.
El diseño de memoria de los iconos del lado del recurso de búfer no en mosaico de la operación de copia es lineal en memoria dentro de iconos de 64 KB, que el hardware y el controlador giran y deswizzle por icono según corresponda cuando se transfieren a y desde un recurso en mosaico. Para las superficies de suavizado multimuestra (MSAA), el hardware y el controlador atraviesan las muestras de cada píxel en orden de índice de muestra antes de pasar al siguiente píxel. En el caso de los iconos que se rellenan parcialmente en el lado derecho (para una superficie que tiene un ancho no múltiplo de ancho de mosaico en píxeles), el tono y el paso para bajar una fila es el tamaño completo en bytes del número de píxeles que caben en el icono si el icono estaba lleno. Por lo tanto, puede haber un espacio entre cada fila de píxeles en memoria. Los mapas Mip que son más pequeños que un icono no se empaquetan juntos en el diseño lineal, lo que podría parecer un desperdicio de espacio de memoria, pero como se mencionó, no puede usar CopyTiles para copiar en mapas mip que el hardware empaqueta juntos. Solo puede usar API de copia genéricas, como CopyTextureRegion, para copiar mapas mip pequeños individualmente.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | d3d12.h |
Library | D3d12.lib |
Archivo DLL | D3d12.dll |