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

ストリーミング リソースを作成するときは、次元、フォーマット要素のサイズ、およびミップマップや配列スライスの数 (該当する場合) によって、サーフェス領域全体をサポートするために必要なタイルの数が決まります。 タイル内のピクセル/バイト レイアウトは、実装によって決定されます。 1 つのタイルに収まるピクセル数は、形式の要素のサイズに応じて固定され、標準スウィズルを使用するかどうかに関係なく同じです。

指定されたサーフェスのサイズと形式要素の幅によって使用されるタイルの数は、次のセクションの表に基づいて定義されており、予測可能です。 ミップマップを含むリソースや、サーフェスのサイズがタイルに満たない場合は、いくつかの制約が存在します。「ミップマップのパッキング」を参照してください。

アプリケーションが、ある形式でのメモリへの書き込みと別の形式での読み取りの結果に依存しない限り、複数のストリーミング リソースがさまざまな形式で同一のメモリを指定できます。 ただし、形式が同じ形式ファミリーである場合 (つまり、型指定なしの親の形式が同じである場合)、アプリケーションは、ある形式でのメモリへの書き込みと別の形式での読み取りの結果に依存する可能性があります。 たとえば、DXGI_FORMAT_R8G8B8A8_UNORM と DXGI_FORMAT_R8G8B8A8_UINT は互換性がありますが、DXGI_FORMAT_R16G16_UNORM とは互換性がありません。

ある形式のデータが別の形式のエイリアスとして定義されている場合は例外です。タイルのすべてのビットに 0 が含まれている場合、そのタイルは、(メモリ レイアウトに関係なく) メモリの内容が 0 であることを解釈する任意の形式で使用できます。 そのため、DXGI_FORMAT_R8_UNORM 形式でタイルを 0x00 にクリアし、DXGI_FORMAT_R32G32_FLOAT などの形式で使用でき、その内容は引き続き (0.0f,0.0f) と表示されます。

タイル内でのデータのレイアウトは、タイルがリソース全体に割り当てられているかどうかに依存しません。 そのため、たとえば、サーフェスの複数の場所で同時にタイルを再利用し、すべての場所で一貫性のある動作を実現できます。

このセクションの内容

トピック 説明

Texture2D と Texture2DArray のサブリソースのタイル表示

次の表に、Texture2D および Texture2DArray サブリソースがどのようにタイル表示されるかを示します。

Texture3D サブリソースのタイル表示

次の表に、Texture3D サブリソースがどのようにタイル表示されるかを示します。

バッファーのタイル表示

バッファー リソースは 64 KB のタイルに分割されます。サイズが 64 KB の倍数でない場合は、最後のタイルに空きが生じます。

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

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

 

ストリーミング リソースの作成