次の方法で共有


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

ID3D11DeviceContext2::ResizeTilePool API を使用して、タイル プールにタイル プールを拡張します。タイル リソースへのマッピングに対してアプリケーションにさらに作業セットが必要な場合は、または必要な領域が少ない場合は縮小します。 アプリケーションのもう 1 つのオプションは、新しいタイル リソースに追加のタイル プールを割り当てることです。 ただし、タイル プールで最初に使用できる容量よりもタイルリソースの方が多い場合は、タイル プールを拡大することをお勧めします。 タイル リソースは、複数のタイル プールに同時にマッピングすることはできません。

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

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

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

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

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