次の方法で共有


DXGKCB_CREATECONTEXTALLOCATION コールバック関数 (d3dkmddi.h)

DXGKCB_CREATECONTEXTALLOCATION は、GPU コンテキストまたはデバイス固有のコンテキストを割り当てます。

構文

DXGKCB_CREATECONTEXTALLOCATION DxgkcbCreatecontextallocation;

NTSTATUS DxgkcbCreatecontextallocation(
  [in/out] INOUT_PDXGKARGCB_CREATECONTEXTALLOCATION unnamedParam1
)
{...}

パラメーター

[in/out] unnamedParam1

割り当てるコンテキストの属性を指定する DXGKARGCB_CREATECONTEXTALLOCATION 構造体へのポインター。

戻り値

成功した 場合、DXGKCB_CREATECONTEXTALLOCATION はSTATUS_SUCCESS を返します。 それ以外の場合は、 Ntstatus.h で定義されているエラー コードのいずれかを返します。

注釈

WDDM 1.2 以降では、ディスプレイ ミニポート ドライバーは、GPU 固有のコンテキスト (GPU コンテキストの割り当て) またはデバイス固有のコンテキスト (デバイス コンテキストの割り当て) を割り当てることができます

GPU コンテキスト割り当てにより、GPU は、実行中に割り込まれた DMA バッファーからのコンテキスト状態を格納できます。 ドライバーは、必要なときに状態を保存するために、GPU コンテキストに関連付けられた割り当てを作成します。 オペレーティング システムは、このコンテキストからのコマンドが GPU のハードウェア実行キューに配置される前に、コンテキスト割り当てが常駐していることを確認します。 コンテキストは、別のコンテキストからのコマンドがハードウェア実行キューに配置されるまで常駐します。

さらに、オペレーティング システムでは、コンテキストに属するコマンドを完了した後、ハードウェア コンテキストの状態が GPU で保持されていると仮定することで、遅延 GPU コンテキストの切り替えをサポートしています。 この方法では、別のコンテキストからのコマンドがハードウェア キューに送信された場合にのみ、コンテキストが GPU で切り替わります。

DXGKCB_XXX 関数は Dxgkrnl によって実装されます。 このコールバック関数を使用するには、DXGKARGCB_ALLOCATEPAGESFORMDLのメンバー設定し、DXGKRNL_INTERFACEを介して DxgkCbCreateContextAllocation を呼び出します。

GPU コンテキストの割り当て

GPU コンテキストの割り当ては、システム以外のコンテキストに対してのみ行うことができます。 ディスプレイ ミニポート ドライバーは、 DxgkDdiCreateContext を呼び出すことによって、これらのコンテキストを作成します。 非システム コンテキストを作成するために、ドライバーは、DXGK_CREATECONTEXTFLAGS構造体の SystemContext メンバーを 0 に設定し、pCreateContext パラメーターでこの構造体へのポインターを渡します。

デバイス コンテキストの割り当ては同様のモデルに従います。ただし、関連付けられているデバイスに属するすべてのコンテキストに対して維持される点が除きます。 このモデルを使用すると、ドライバーは GPU コンテキストの割り当てを使用して GPU コンテキスト保存領域 (CSA) データを格納し、ページ テーブル データを格納するためにデバイス コンテキスト割り当てを使用できます。

デバイス コンテキストの割り当て

デバイス コンテキストの割り当ては、システム以外のデバイスに対してのみ行うことができます。 ディスプレイ ミニポート ドライバーは 、DxgkDdiCreateDevice を呼び出すことによって、これらのデバイスを作成します。 システム以外のデバイスを作成するために、ドライバーは、DXGK_CREATEDEVICEFLAGS構造体の Flags.SystemDevice メンバーを 0 に設定し、pCreateDevice パラメーターでこの構造体へのポインターを渡します。

ディスプレイ ミニポート ドライバーは、DxgkCbCreateContextAllocation を介して割り当てられたコンテキスト リソースを解放するために、DXGKCB_DESTROYCONTEXTALLOCATIONを呼び出します。

宛先コンテキスト割り当ての仮想アドレス

オペレーティング システムがターゲット コンテキスト割り当て (DXGKARG_BUILDPAGINGBUFFER 構造体の InitContextResource-Destination-VirtualAddress>> メンバー) の有効な (NULL 以外の) 仮想アドレスを確実に設定するには、ディスプレイ ミニポート ドライバーが DxgkCbCreateContextAllocation を呼び出すときに、次の操作を行う必要があります。

要件

要件
サポートされている最小のクライアント Windows 8 (WDDM 1.2)
サポートされている最小のサーバー Windows Server 2012
対象プラットフォーム デスクトップ
Header d3dkmddi.h (D3dkmddi.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

DXGK_ALLOCATIONINFOFLAGS

DXGK_CREATECONTEXTFLAGS

DXGK_CREATEDEVICEFLAGS

DXGKARG_BUILDPAGINGBUFFER

DXGKARGCB_CREATECONTEXTALLOCATION

DXGKCB_DESTROYCONTEXTALLOCATION

DxgkDdiCreateContext

DxgkDdiCreateDevice

DXGKRNL_INTERFACE