ID3D11DeviceContext2::UpdateTiles 메서드(d3d11_2.h)
앱 메모리에서 타일형 리소스로 복사하여 타일을 업데이트.
구문
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
);
매개 변수
[in] pDestTiledResource
형식: ID3D11Resource*
업데이트할 타일형 리소스에 대한 포인터입니다.
[in] pDestTileRegionStartCoordinate
형식: const D3D11_TILED_RESOURCE_COORDINATE*
타일형 리소스의 시작 좌표를 설명하는 D3D11_TILED_RESOURCE_COORDINATE 구조체에 대한 포인터입니다.
[in] pDestTileRegionSize
형식: const D3D11_TILE_REGION_SIZE*
타일 영역의 크기를 설명하는 D3D11_TILE_REGION_SIZE 구조체에 대한 포인터입니다.
[in] pSourceTileData
형식: const void*
UpdateTiles가 바둑판식 리소스를 업데이트하는 데 사용하는 원본 타일 데이터를 포함하는 메모리에 대한 포인터입니다.
[in] Flags
형식: UINT
비트 OR 연산을 사용하여 결합된 D3D11_TILE_COPY_FLAG 형식 값의 조합입니다. 유일한 유효한 값은 D3D11_TILE_COPY_NO_OVERWRITE. 다른 값은 여기서는 의미가 없지만 정의상 D3D11_TILE_COPY_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE 값은 기본적으로 UpdateTiles 에서 수행하는 값이지만 앱 메모리의 원본입니다.
반환 값
없음
설명
UpdateTiles 는 매핑되지 않은 영역에 쓰기 작업을 삭제합니다(매핑되지 않은 영역에 쓰기가 잘못된 Tier_1 타일형 리소스 제외).
대상 리소스의 여러 위치가 동일한 타일 메모리에 매핑되기 때문에 복사 작업에 동일한 메모리 위치에 여러 번 쓰는 작업이 포함되는 경우 다중 매핑된 타일에 대한 결과 쓰기 작업은 비결정적이고 반복할 수 없습니다. 즉, 타일 메모리에 대한 액세스는 하드웨어가 복사 작업을 실행하는 순서에 관계없이 발생합니다.
복사 작업과 관련된 타일에는 압축된 Mipmap이 포함된 타일이나 복사 작업의 결과가 정의되지 않은 타일이 포함될 수 없습니다. 하드웨어가 하나의 타일로 압축하는 Mipmap과 데이터를 전송하려면 표준(즉, 타일이 아닌) 복사 및 업데이트 API(예: ID3D11DeviceContext1::CopySubresourceRegion1 및 ID3D11DeviceContext1::UpdateSubresource1) 또는 전체 Mipmap 체인에 대해 ID3D11DeviceContext::GenerateMips 를 사용해야 합니다.
복사 작업의 원본 쪽에 있는 데이터의 메모리 레이아웃은 64KB 타일 내의 메모리에서 선형이며, 하드웨어 및 드라이버는 타일 리소스로 전송할 때 적절하게 타일당 스위즐 및 디비즐을 수행합니다. MSAA(다중 샘플 앤티앨리어싱) 표면의 경우 하드웨어와 드라이버는 다음 픽셀로 이동하기 전에 각 픽셀의 샘플을 샘플 인덱스 순서로 트래버스합니다. 오른쪽에 부분적으로 채워진 타일의 경우(너비가 타일 너비의 배수가 아닌 픽셀)의 경우 행 아래로 이동하는 피치 및 보폭은 타일이 가득 차면 타일에 맞는 숫자 픽셀의 전체 크기(바이트)입니다. 따라서 메모리의 각 픽셀 행 사이에 간격이 있을 수 있습니다. 타일보다 작은 Mipmap은 선형 레이아웃에 함께 압축되지 않으므로 메모리 공간 낭비로 보일 수 있지만, 언급했듯이 ID3D11DeviceContext2::CopyTiles 또는 UpdateTiles 를 사용하여 하드웨어가 함께 압축하는 Mipmap에 복사할 수 없습니다. 일반 복사 및 업데이트 API(예: ID3D11DeviceContext1::CopySubresourceRegion1 및 ID3D11DeviceContext1::UpdateSubresource1)를 사용하여 작은 Mipmap을 개별적으로 복사할 수 있습니다. 일반 복사 API(예: ID3D11DeviceContext1::CopySubresourceRegion1)의 경우 선형 메모리는 타일식 리소스와 동일한 차원이어야 합니다. ID3D11DeviceContext1::CopySubresourceRegion1은 버퍼 리소스에서 instance 대한 Texture2D로 복사할 수 없습니다.
타일형 리소스에 대한 자세한 내용은 타일형 리소스를 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows 8.1 [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2012 R2 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | d3d11_2.h |
라이브러리 | D3D11.lib |