ID3D11DeviceContext2::UpdateTiles メソッド (d3d11_2.h)
タイルを更新するには、アプリ メモリからタイル リソースにコピーします。
構文
void UpdateTiles(
[in] ID3D11Resource *pDestTiledResource,
[in] const D3D11_TILED_RESOURCE_COORDINATE *pDestTileRegionStartCoordinate,
[in] const D3D11_TILE_REGION_SIZE *pDestTileRegionSize,
[in] const void *pSourceTileData,
[in] UINT Flags
);
パラメーター
[in] pDestTiledResource
種類: ID3D11Resource*
更新するタイル リソースへのポインター。
[in] pDestTileRegionStartCoordinate
型: const D3D11_TILED_RESOURCE_COORDINATE*
タイルリソースの開始座標を記述する D3D11_TILED_RESOURCE_COORDINATE 構造体へのポインター。
[in] pDestTileRegionSize
型: const D3D11_TILE_REGION_SIZE*
タイル領域のサイズを記述する D3D11_TILE_REGION_SIZE 構造体へのポインター。
[in] pSourceTileData
型: const void*
UpdateTiles がタイル リソースの更新に使用するソース タイル データを含むメモリへのポインター。
[in] Flags
型: UINT
ビットごとの OR 演算を使用して結合される D3D11_TILE_COPY_FLAG型指定された値の組み合わせ。 有効な値は D3D11_TILE_COPY_NO_OVERWRITEのみです。 他の値はここでは意味がありませんが、定義上、 D3D11_TILE_COPY_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE 値は基本的に UpdateTiles の機能ですが、アプリ メモリからのソースです。
戻り値
なし
解説
UpdateTiles は、マップされていない領域への書き込み操作を削除します (マップされていない領域への書き込みが無効 なタイル リソース Tier_1を除く)。
コピー操作で、コピー先リソース内の複数の場所が同じタイル メモリにマップされるため、同じメモリの場所への書き込みが複数回含まれる場合、複数マップされたタイルに対する結果の書き込み操作は、決定論的で繰り返し不可能です。つまり、タイル メモリへのアクセスは、ハードウェアがコピー操作を実行するために発生する順序に関係なく行われます。
コピー操作に関係するタイルには、パックされたミップマップを含むタイルを含めることはできません。または、コピー操作の結果が未定義です。 ハードウェアがパックするミップマップとの間でデータを 1 つのタイルに転送するには、標準 (つまり、タイル固有ではない) コピーと更新 API ( ID3D11DeviceContext1::CopySubresourceRegion1 や ID3D11DeviceContext1::UpdateSubresource1 など) を使用するか、MIPmap チェーン全体 の ID3D11DeviceContext::GenerateMips を使用する必要があります。
コピー操作のソース側のデータのメモリ レイアウトは、64 KB タイル内のメモリ内で線形です。ハードウェアとドライバーは、タイルリソースとの間で転送するときに必要に応じてタイルごとにスウィズルとデスウィズルを行います。 マルチサンプル アンチエイリアシング (MSAA) サーフェスの場合、ハードウェアとドライバーは、次のピクセルに移動する前に、各ピクセルのサンプルをサンプルインデックス順に走査します。 右側に部分的に塗りつぶされたタイル (幅がピクセル単位の倍数ではないサーフェスの場合) の場合、行を下に移動するピッチとストライドは、タイルがいっぱいの場合にタイル全体に収まる数値ピクセルのフルサイズ (バイト単位) です。 そのため、メモリ内のピクセルの各行の間にギャップが発生する可能性があります。 タイルよりも小さいミップマップは、線形レイアウトに一緒に詰め込まれません。これはメモリ領域の無駄に思えるかもしれませんが、前述のように ID3D11DeviceContext2::CopyTiles または 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 |