ミップマップのパッキング

ストリーミング リソースの大きさ、形式、ミップマップの数、配列スライスに応じて、一定の数のミップ (配列スライスごとに) を一定の数のタイルにパッキングできます。

ストリーミング リソース サポートの階層によっては、一定の大きさのミップマップは標準タイルの形状に従わないため、アプリケーションにとって不透明な方法ですべてまとめてパッキングされると考えられます。 サポートの階層が高い方が、標準タイルの形状に収まるサーフェスの大きさの種類を広く保証します (したがって、アプリケーションが個別にマッピングできます)。

(ストリーミング リソースの大きさ、形式、ミップマップの数、配列スライスを考えると) 実装間で異なる可能性があるのは、N 個のタイルにパッキングできるミップの数 M (配列スライスごと) です。 デバイスのリソース タイル情報を取得すると、ドライバーが (ハードウェア ベンダーごとに変化しない標準値である、サーフェスについての他の詳細と共に) M と N の値をアプリケーションに報告します。 マッピングされたミップのタイル セットは引き続き 64 KB であるため、タイル プール内の異なる位置に別個にマッピングできます。

ただし、タイルのピクセルの形状とミップマップがタイル セットにどのように収まるかは、ハードウェア ベンダーによって異なるため、複雑すぎて説明することができません。 したがって、アプリケーションはパッキング対象として指定されたすべてのタイルを一度にマッピングするか、何もマッピングしないかのどちらかの処理を行う必要があります。 それ以外の場合のストリーミング リソースへのアクセス動作は定義されていません。

配列になったサーフェスの場合、パッキングされたミップのセットと、それらのミップを格納するマッピングされたタイルの数 (前述の M と N) は、配列スライスごとに別個に適用されます。

タイルをコピーする専用の API は、パッキングされたミップにアクセスできません。 パッキングされたミップとの間でデータをコピーする必要があるアプリケーションは、サーフェスにコピーおよびレンダリングするための非ストリーミング リソース固有の API をすべて使ってコピーを行うことができます。

ストリーミング リソースの領域をタイル表示する方法