タイル プールのサイズ変更

アプリケーションに、ストリーミング リソースのマッピング先のワーキング セットがさらに必要になった場合にタイル プールを拡大したり、必要な容量が少なくなった場合にタイル プールを縮小したりするためにタイル プールのサイズを変更します。 アプリケーションの別のオプションとして、新しいストリーミング リソース用に追加のタイル プールを割り当てることもできます。 1 つのストリーミング リソースが、そのリソースのタイル プールで最初に利用できる容量より多くの容量を必要とする場合は、タイル プールを拡大することが適切です。 ストリーミング リソースに、同時に複数のタイル プールへのマッピングを含めることはできません。

タイル プールが拡大されると、ディスプレイ ドライバーによって、1 つ以上の新しい割り当てを介してプールの最後にタイルが追加されます。 この割り当ての詳細はアプリケーションには見えません。 タイル プール内の既存のメモリはそのまま残り、そのメモリへの既存のストリーミング リソース マッピングもそのまま残ります。

タイル プールが縮小されると、プールの最後からタイルが削除されます。 タイルは初期割り当てサイズより少なくなっても 0 まで削除されます。つまり、新しいサイズを超えて新しいマッピングを行うことはできません。 ただし、新しいサイズの最後を超える既存のマッピングはそのまま残り、使用できます。 ディスプレイ ドライバーは、ドライバーがタイル プールのメモリのために使用する割り当ての一部へのマッピングが残っている限り、メモリを維持し続けます。 縮小後、タイルのマッピングが指していたために一部のメモリが有効に保たれていた場合、タイル プールが再び拡大されると (任意の量)、拡大するサイズに対応するために追加の割り当てが行われる前に、まず既存のメモリが再利用されます。

メモリを節約するために、アプリケーションはタイル プールを縮小するだけでなく、縮小された新しいタイル プールのサイズの最後を超える既存のマッピングを削除/再マッピングする必要もあります。

縮小 (およびマッピングの削除) しても、ただちにメモリの節約が行われるとは限りません。 どのようにメモリを解放するかは、ディスプレイ ドライバーによるタイル プールの基になる割り当ての細かさによって異なります。 ディスプレイ ドライバーによる割り当てを未使用にできるほど縮小された場合、ディスプレイ ドライバーは割り当てを解放できます。 タイル プールが拡大された場合、以前のサイズに縮小 (および、それに応じてタイル マッピングを削除/再マッピング) すると、メモリの節約が行われる可能性が高いですが、サイズがディスプレイ ドライバーによって選択された基になる割り当てサイズと完全に一致していない場合は節約されるとは限りません。

タイル プールにマッピングされます