ID3D12GraphicsCommandList::CopyTiles メソッド (d3d12.h)

バッファーからタイル リソースにタイルをコピーするか、またはその逆にタイルをコピーします。

構文

void CopyTiles(
  [in] ID3D12Resource                        *pTiledResource,
  [in] const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
  [in] const D3D12_TILE_REGION_SIZE          *pTileRegionSize,
  [in] ID3D12Resource                        *pBuffer,
       UINT64                                BufferStartOffsetInBytes,
       D3D12_TILE_COPY_FLAGS                 Flags
);

パラメーター

[in] pTiledResource

種類: ID3D12Resource*

タイルリソースへのポインター。

[in] pTileRegionStartCoordinate

型: const D3D12_TILED_RESOURCE_COORDINATE*

タイルリソースの開始座標を記述する D3D12_TILED_RESOURCE_COORDINATE 構造体へのポインター。

[in] pTileRegionSize

型: const D3D12_TILE_REGION_SIZE*

タイル領域のサイズを記述する D3D12_TILE_REGION_SIZE 構造体へのポインター。

[in] pBuffer

種類: ID3D12Resource*

既定、動的、またはステージング バッファーを表す ID3D12Resource へのポインター。

BufferStartOffsetInBytes

型: UINT64

操作を開始するための pBuffer のバッファーへのバイト単位のオフセット。

Flags

種類: D3D12_TILE_COPY_FLAGS

ビットごとの OR 演算を使用して結合され、タイルのコピー方法を識別する、 D3D12_TILE_COPY_FLAGS型指定された値の組み合わせ。

戻り値

なし

解説

CopyTiles はマップされていない領域に書き込み操作を削除し、マップされていない領域からの読み取り操作を処理します (マップされていない領域の読み取りと書き込みが無効なタイルリソースTier_1を除く - D3D12_TILED_RESOURCES_TIERを参照)。

コピー操作で、コピー先リソース内の複数の場所が同じタイル メモリにマップされるために、同じメモリの場所に複数回書き込む必要がある場合、複数マップされたタイルに対する書き込み操作は非決定的で反復不可能になります。つまり、タイル メモリへのアクセスは、ハードウェアがコピー操作を実行するために発生する順序に関係なく行われます。

コピー操作に関係するタイルには、パックされたミップマップを含むタイルを含めることはできません。または、コピー操作の結果が未定義です。 ハードウェアがパックする mipmap から、パックされた mips を構成する 1 つ以上のタイルにデータを転送するには、標準 (つまり、タイル固有ではない) コピー API ( CopyTextureRegion など) を使用する必要があります。

CopyTiles は、標準のコピー 方法とは少し異なるパターンでデータをコピーします。

コピー操作のタイル化されていないバッファー リソース側のタイルのメモリ レイアウトは、64 KB タイル内のメモリ内で線形であり、タイルリソースとの間で転送する際に必要に応じて、ハードウェアとドライバーがタイルごとにスワイズルとドスウィズルを行います。 マルチサンプル アンチエイリアシング (MSAA) サーフェスの場合、ハードウェアとドライバーは、各ピクセルのサンプルをサンプル インデックス順に走査してから、次のピクセルに移動します。 右側に部分的に塗りつぶされたタイルの場合 (幅がピクセル単位のタイル幅の倍数ではないサーフェスの場合)、行を下に移動するピッチとストライドは、タイルがいっぱいの場合にタイル全体に収まる数値ピクセルのバイト単位のフル サイズです。 そのため、メモリ内のピクセルの各行の間にギャップが存在する可能性があります。 タイルよりも小さいミップマップは線形レイアウトに一緒にパックされません。これはメモリ領域の無駄と思われるかもしれませんが、前述のように CopyTiles を使用して、ハードウェアが一緒にパックするミップマップにコピーすることはできません。 CopyTextureRegion などの汎用コピー API を使用するだけで、小さなミップマップを個別にコピーできます。

要件

要件
対象プラットフォーム Windows
ヘッダー d3d12.h
Library D3d12.lib
[DLL] D3d12.dll

こちらもご覧ください

ID3D12GraphicsCommandList

タイルリソース