ID3D12GraphicsCommandList::CopyTiles 메서드(d3d12.h)
버퍼에서 타일 리소스로 또는 그 반대로 타일을 복사합니다.
구문
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
);
매개 변수
[in] pTiledResource
형식: ID3D12Resource*
타일형 리소스에 대한 포인터입니다.
[in] pTileRegionStartCoordinate
형식: const D3D12_TILED_RESOURCE_COORDINATE*
타일형 리소스의 시작 좌표를 설명하는 D3D12_TILED_RESOURCE_COORDINATE 구조체에 대한 포인터입니다.
[in] pTileRegionSize
형식: const D3D12_TILE_REGION_SIZE*
타일 영역의 크기를 설명하는 D3D12_TILE_REGION_SIZE 구조체에 대한 포인터입니다.
[in] pBuffer
형식: ID3D12Resource*
기본, 동적 또는 스테이징 버퍼를 나타내는 ID3D12Resource 에 대한 포인터입니다.
BufferStartOffsetInBytes
형식: UINT64
작업을 시작하기 위해 pBuffer 의 버퍼에 대한 오프셋(바이트)입니다.
Flags
비트 OR 연산을 사용하여 결합되고 타일을 복사하는 방법을 식별하는 D3D12_TILE_COPY_FLAGS 형식 값의 조합입니다.
반환 값
없음
설명
CopyTiles 는 매핑되지 않은 영역에 쓰기 작업을 삭제하고 매핑되지 않은 영역에서 읽기 작업을 처리합니다(매핑되지 않은 영역 읽기 및 쓰기가 잘못된 Tier_1 타일식 리소스 제외 - D3D12_TILED_RESOURCES_TIER 참조).
대상 리소스의 여러 위치가 동일한 타일 메모리에 매핑되기 때문에 복사 작업에 동일한 메모리 위치에 여러 번 쓰는 작업이 포함되는 경우 다중 매핑된 타일에 대한 결과 쓰기 작업은 비결정적이고 반복할 수 없습니다. 즉, 타일 메모리에 대한 액세스는 하드웨어가 복사 작업을 실행하는 순서에 관계없이 발생합니다.
복사 작업과 관련된 타일에는 압축된 Mipmap이 포함된 타일이나 복사 작업의 결과가 정의되지 않은 타일이 포함될 수 없습니다. 하드웨어가 압축된 밉을 구성하는 하나 이상의 타일로 압축된 Mipmap 간 데이터를 전송하려면 CopyTextureRegion과 같은 표준(즉, 타일에 특정하지 않은) 복사 API를 사용해야 합니다.
CopyTiles 는 표준 복사 메서드와 약간 다른 패턴으로 데이터를 복사합니다.
복사 작업의 타일이 아닌 버퍼 리소스 쪽에 있는 타일의 메모리 레이아웃은 64KB 타일 내의 메모리에서 선형이며, 타일 리소스로 전송할 때 하드웨어 및 드라이버가 타일당 스위즐 및 스위즐 해제를 적절하게 합니다. MSAA(다중 샘플 앤티앨리어싱) 표면의 경우 하드웨어와 드라이버는 다음 픽셀로 이동하기 전에 각 픽셀의 샘플을 샘플 인덱스 순서로 트래버스합니다. 오른쪽에 부분적으로 채워진 타일의 경우(너비가 타일 너비의 배수가 아닌 픽셀)의 경우 행 아래로 이동하는 피치 및 보폭은 타일이 가득 차면 타일에 맞는 숫자 픽셀의 전체 크기(바이트)입니다. 따라서 메모리의 각 픽셀 행 사이에 간격이 있을 수 있습니다. 타일보다 작은 Mipmap은 선형 레이아웃에 함께 압축되지 않으므로 메모리 공간이 낭비되는 것처럼 보일 수 있지만, 언급했듯이 CopyTiles 를 사용하여 하드웨어가 함께 압축하는 밉맵에 복사할 수는 없습니다. CopyTextureRegion과 같은 제네릭 복사 API를 사용하여 작은 밉맵을 개별적으로 복사할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | d3d12.h |
라이브러리 | D3d12.lib |
DLL | D3d12.dll |