타일 풀 크기 조정
타일 풀에 매핑된 타일 리소스에 대해 더 많은 작업 집합이 필요한 경우 ID3D11DeviceContext2::ResizeTilePool API를 사용하여 타일 풀을 확장하거나 공간이 더 적은 경우 축소합니다. 애플리케이션의 또 다른 옵션은 바둑판식 새 리소스에 대해 추가 타일 풀을 할당하는 것입니다. 그러나 타일 풀에서 처음에 사용할 수 있는 것보다 더 많은 공간이 필요한 단일 타일 리소스가 있는 경우 타일 풀을 늘리는 것이 좋습니다. 타일식 리소스는 동시에 여러 타일 풀에 매핑할 수 없습니다.
타일 풀의 크기가 늘어나면 타일이 디스플레이 드라이버에서 하나 이상의 새로운 할당을 통해 끝단에 추가됩니다. 할당 세분화는 애플리케이션에 표시되지 않습니다. 타일 풀의 기존 메모리는 그대로 유지되고 해당 메모리에 대한 기존 타일식 리소스 매핑은 그대로 유지됩니다.
타일 풀의 크기가 줄어들면 타일이 끝단에서 제거됩니다. 심지어 초기 할당 크기 밑으로 0까지도 타일이 제거됩니다. 이 말은 새로운 매핑은 새로운 크기를 지나서 만들 수 없다는 것을 의미합니다. 하지만 새로운 크기의 끝단을 지나는 기존 매핑은 변함 없이 사용할 수 있습니다. 디스플레이 드라이버는 타일 풀 메모리에 사용하는 할당 중 일부에 대한 매핑이 계속 지속되는 한 메모리를 유지합니다. 타일 매핑이 가리킨다는 이유로 일부 메모리의 축소가 계속해서 유지되다가 다시 타일 풀의 크기가 늘어나는 경우(약간이라도)에는 추가 할당 이전에 기존 메모리를 먼저 재사용하여 늘어난 크기를 맞춥니다.
애플리케이션은 메모리를 아끼기 위해 타일 풀을 축소하기도 하지만 동시에 더 작은 크기의 새로운 타일 풀 끝단을 지나는 기존 매핑을 제거하거나 다시 매핑해야 합니다.
크기를 줄이고 매핑을 제거한다고 해서 메모리가 바로 절약되는 것은 아닙니다. 여유 메모리의 확보는 타일 풀에 대한 디스플레이 드라이버의 기본 할당이 얼마나 세분화되어 있는가에 따라 다릅니다. 디스플레이 드라이버 할당을 사용하지 않을 만큼만 축소가 일어난다면 디스플레이 드라이버가 여유 메모리를 확보할 수 있습니다. 크기가 디스플레이 드라이버에서 선택한 기본 할당 크기에 맞춰 정확히 조정되지 않는 경우에는 보장할 수 없지만 타일 풀의 크기가 늘어났으면 기존 크기로 축소하고 그에 따라 타일 매핑을 제거하거나 다시 매핑하는 것이 메모리를 아낄 가능성이 가장 높습니다.
관련 항목