構文
パラメーター
pTiledResource [in]型: ID3D12Resource * タイル リソースへのポインター。 pTileRegionStartCoordinate [in]
型: const D3D12_TILED_RESOURCE_COORDINATE * タイル リソースの開始座標を記述する D3D12_TILED_RESOURCE_COORDINATE 構造体へのポインター。 pTileRegionSize [in]
型: const D3D12_TILE_REGION_SIZE * タイル領域のサイズを記述する D3D12_TILE_REGION_SIZE 構造体へのポインター。 pBuffer [in]
型: ID3D12Resource * 既定、動的、またはステージング バッファーを表す ID3D12Resource へのポインター。 BufferStartOffsetInBytes
型: UINT64 操作を開始する、pBuffer のバッファーへのバイト単位のオフセット。 Flags
型: D3D12_TILE_COPY_FLAGS ビットごとの OR 演算を使用して結合された D3D12_TILE_COPY_FLAGS 型の値の組み合わせ。タイルのコピー方法を識別します。
戻り値
型: void なし。解説
CopyTiles は、マップされていない領域への書き込み操作をドロップし、マップされていない領域からの読み取り操作を処理します (Tier_1 タイル リソースを除きます。この場合、マップされていない領域の読み書きは無効です。D3D12_TILED_RESOURCES_TIER を参照してください)。 コピー操作でコピー先リソース内の複数の場所が同じタイル メモリにマップされているために、同じメモリ位置への書き込みが複数回発生する場合、マルチマップされたタイルへの書き込み操作の結果は 非決定論的で反復不可能です。つまり、タイル メモリへのアクセスは、ハードウェアがコピー操作を実行する順序で発生します。 コピー操作に関与するタイルは、パックされたミップマップを含むタイルを含めることはできません。含めるとコピー操作の結果が未定義になります。ハードウェアがパックされたミップを構成する 1 つ以上のタイルにパックしたミップマップとの間でデータを転送するには、 CopyTextureRegion のような標準の (つまり、タイル固有ではない) コピー API を使用する必要があります。 CopyTiles は、標準のコピー メソッドとは少し異なるパターンでデータをコピーします。 コピー操作のタイル化されていないバッファー リソース側のタイルのメモリ レイアウトは、64 KB タイル内のメモリ内で線形です。ハードウェアとドライバーは、タイル リソースとの間で転送するときに、タイルごとに適切にスウィズルおよびデスウィズルを行います。マルチサンプル アンチエイリアシング (MSAA) サーフェスの場合、ハードウェアとドライバーは各ピクセルのサンプルをサンプル インデックス順に走査してから次のピクセルに移動します。右側が部分的に埋められているタイル (幅がピクセルのタイル幅の倍数ではないサーフェスの場合) について、行を下に移動するピッチとストライドは、タイルが満たされている場合にタイルを横切って収まるピクセル数の完全なサイズ (バイト単位) です。したがって、メモリ内のピクセルの各行の間にギャップがある可能性があります。タイルより小さいミップマップは線形レイアウトで一緒にパックされていないため、メモリ空間の無駄に見えるかもしれませんが、前述のように CopyTiles を使用してハードウェアが一緒にパックするミップマップにコピーすることはできません。CopyTextureRegion のような汎用コピー API を使用して、小さなミップマップを個別にコピーすることはできます。要件
ヘッダー: d3d12_xs.h または d3d12_x.hライブラリ: d3d12_xs.lib または d3d12_x.lib
サポートされるプラットフォーム: XBOX Series 本体および XBOX One ファミリ
