D3DKMTUpdateGpuVirtualAddress 関数 (d3dkmthk.h)

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

構文

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

パラメーター

[in] unnamedParam1

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

戻り値

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

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

注釈

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

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

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

1 回の UpdateVirtualAddress 呼び出しで、

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

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

要件

要件
サポートされている最小のクライアント Windows 10
サポートされている最小のサーバー Windows Server 2016
対象プラットフォーム ユニバーサル
Header d3dkmthk.h (D3dkmthk.h を含む)
Library Gdi32.lib
[DLL] Gdi32.dll

こちらもご覧ください

D3DKMT_UPDATEGPUVIRTUALADDRESS

ReserveGpuVirtualAddressRange