次の方法で共有


D3DKMTUpdateGpuVirtualAddress 関数 (d3dkmthk.h)

D3DKMTUpdateGpuVirtualAddress は、タイル リソースのコンテキストで使用される特別な操作です。 これにより、ドライバーは、ページ テーブルの更新の 1 つのバッチでプロセスの仮想アドレス空間に適用するマッピング操作の数を指定できます。

構文

NTSTATUS D3DKMTUpdateGpuVirtualAddress(
  [in] const D3DKMT_UPDATEGPUVIRTUALADDRESS *unnamedParam1
);

パラメーター

[in] unnamedParam1

操作を記述する D3DKMT_UPDATEGPUVIRTUALADDRESS 構造体へのポインター。

戻り値

リターン コード 形容
STATUS_SUCCESS デバイス コンテキストが正常に作成されました。
STATUS_INVALID_PARAMETER パラメーターが検証され、正しくないと判断されました。

この関数は、NTSTATUS 他の値を返す場合もあります。

備考

すべての操作 (コピー操作のソースを除く) のグラフィックス処理装置 (GPU) 仮想アドレスの範囲は、ReserveGpuVirtualAddressRange 呼び出すことによって取得された単一の仮想アドレス範囲に属している必要があります。 同様に、コピー操作のすべてのソースの仮想アドレス範囲は、ReserveGpuVirtualAddressRange 呼び出すことによって取得された 1 つの仮想アドレス範囲に属している必要があります。

ページ テーブルの更新は、指定されたレンダリング コンテキスト専用のページング コンテキストで実行され、指定された監視対象のフェンス オブジェクトに対して FenceValue 通知された関連付けられたレンダリング コンテキストの後にのみ GPU 上で実行されます。 ページ テーブルの更新が完了すると、ページング コンテキストは、監視対象のフェンス オブジェクトに FenceValue +1 をするよう通知し、レンダリング コンテキストがページ テーブルの更新と緊密に連動できるようにします。

更新操作の仮想アドレス範囲は交差できます。 操作は、送信された順序で適用されます。

1 つの UpdateVirtualAddress 呼び出しで次の手順を実行します。

  • マッピング操作のすべての仮想アドレス範囲とコピー操作の宛先範囲は、同じ予約済み (ゼロ) 範囲に属している必要があります。
  • コピー操作のソース仮想アドレス範囲は、別の予約済み (ゼロ) 範囲から取得できます。
  • すべてのコピー操作のソース仮想アドレス範囲は、同じ予約済み (ゼロ) 範囲に属している必要があります。

ドライバーは、UpdateGpuVirtualAddress 呼び出し 多数送信できます。この呼び出しは、レンダリング フェンスの背後にキューに入れられます。 キューに登録された更新操作の数が 128 を超えると、前の操作がビデオ メモリ マネージャーによって処理されるまで、呼び出し元のスレッドはブロックされます。

必要条件

要件 価値
サポートされる最小クライアント Windows 10
サポートされる最小サーバー Windows Server 2016
ターゲット プラットフォーム 万国
ヘッダー d3dkmthk.h (D3dkmthk.h を含む)
ライブラリ Gdi32.lib
DLL Gdi32.dll

関連項目

D3DKMT_UPDATEGPUVIRTUALADDRESS

ReserveGpuVirtualAddressRange