ID3D11DeviceContext2::CopyTiles メソッド (d3d11_2.h)
バッファーからタイル リソースにタイルをコピーするか、タイル リソースにタイルをコピーします。
構文
void CopyTiles(
[in] ID3D11Resource *pTiledResource,
[in] const D3D11_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
[in] const D3D11_TILE_REGION_SIZE *pTileRegionSize,
[in] ID3D11Buffer *pBuffer,
[in] UINT64 BufferStartOffsetInBytes,
[in] UINT Flags
);
パラメーター
[in] pTiledResource
種類: ID3D11Resource*
タイルリソースへのポインター。
[in] pTileRegionStartCoordinate
型: const D3D11_TILED_RESOURCE_COORDINATE*
タイルリソースの開始座標を記述する D3D11_TILED_RESOURCE_COORDINATE 構造体へのポインター。
[in] pTileRegionSize
型: const D3D11_TILE_REGION_SIZE*
タイル領域のサイズを記述する D3D11_TILE_REGION_SIZE 構造体へのポインター。
[in] pBuffer
種類: ID3D11Buffer*
既定、動的、またはステージング バッファーを表す ID3D11Buffer へのポインター。
[in] BufferStartOffsetInBytes
種類: UINT64
操作を開始するための pBuffer のバッファーへのオフセット (バイト単位)。
[in] Flags
型: UINT
ビットごとの OR 演算 を使用して結合され、タイルのコピー方法を識別する、D3D11_TILE_COPY_FLAG型指定された値の組み合わせ。
戻り値
なし
解説
CopyTiles は、マップされていない領域への書き込み操作を削除し、マップされていない領域からの読み取り操作を処理します (マップされていない領域の読み取りと書き込みが無効 なタイルリソース Tier_1を除きます)。
コピー操作で、コピー先リソース内の複数の場所が同じタイル メモリにマップされるため、同じメモリの場所への書き込みが複数回含まれる場合、複数マップされたタイルに対する結果の書き込み操作は、決定論的で繰り返し不可能です。つまり、タイル メモリへのアクセスは、ハードウェアがコピー操作を実行するために発生する順序に関係なく行われます。
コピー操作に関係するタイルには、パックされたミップマップを含むタイルを含めることはできません。または、コピー操作の結果が未定義です。 ハードウェアがパックする mipmap との間でデータをパックされた mips を構成する 1 つ以上のタイルに転送するには、標準 (つまり、タイル固有ではない) コピーと更新 API ( ID3D11DeviceContext1::CopySubresourceRegion1 、 ID3D11DeviceContext1::UpdateSubresource1) または ID3D11DeviceContext::GenerateMips を mipmap チェーン全体に対して使用する必要があります。
コピー操作のタイル以外のバッファー リソース側のタイルのメモリ レイアウトは、64 KB タイル内のメモリ内で線形です。これは、タイルリソースとの間で転送するときに必要に応じて、タイルごとにハードウェアとドライバーがスウィズルとデスウィズルを行います。 マルチサンプル アンチエイリアシング (MSAA) サーフェスの場合、ハードウェアとドライバーは、次のピクセルに移動する前に、各ピクセルのサンプルをサンプルインデックス順に走査します。 右側に部分的に塗りつぶされたタイル (幅がピクセル単位の倍数ではないサーフェスの場合) の場合、行を下に移動するピッチとストライドは、タイルがいっぱいの場合にタイル全体に収まる数値ピクセルのフルサイズ (バイト単位) です。 そのため、メモリ内のピクセルの各行の間にギャップが発生する可能性があります。 タイルよりも小さいミップマップは、線形レイアウトにまとめてパックされません。これはメモリ領域の無駄に思えるかもしれませんが、前述のように 、CopyTiles または ID3D11DeviceContext2::UpdateTiles を使用して、ハードウェアが一緒にパックする mipmaps にコピーすることはできません。 汎用コピーおよび更新 API ( ID3D11DeviceContext1::CopySubresourceRegion1 や ID3D11DeviceContext1::UpdateSubresource1 など) を使用するだけで、小さなミップマップを個別にコピーできます。 汎用コピー API ( ID3D11DeviceContext1::CopySubresourceRegion1 など) の場合、線形メモリはタイル 化されたリソースと同じディメンションである必要があります。 ID3D11DeviceContext1::CopySubresourceRegion1 は、たとえばバッファー リソースから Texture2D にコピーできません。
タイルリソースの詳細については、「タイル化された リソース」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8.1 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2012 R2 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | d3d11_2.h |
Library | D3D11.lib |