DXGI1_3_DDI_BASE_FUNCTIONS 構造体 (dxgiddi.h)
Windows ディスプレイ ドライバー モデル (WDDM) 1.3 以降のユーザー モード ディスプレイ ドライバーが実装できる関数へのポインターが含まれています。これは、レンダリングされたフレームを出力に表示する、ガンマを制御する、共有および Windows グラフィックス デバイス インターフェイス (GDI) の相互運用可能なサーフェスに関する通知を取得する、全画面表示の切り替えを管理するなどの低レベルのタスクを実行します。
構文
typedef struct DXGI1_3_DDI_BASE_FUNCTIONS {
HRESULT()(DXGI_DDI_ARG_PRESENT *) * pfnPresent;
HRESULT()(DXGI_DDI_ARG_GET_GAMMA_CONTROL_CAPS *) * pfnGetGammaCaps;
HRESULT()(DXGI_DDI_ARG_SETDISPLAYMODE *) * pfnSetDisplayMode;
HRESULT()(DXGI_DDI_ARG_SETRESOURCEPRIORITY *) * pfnSetResourcePriority;
HRESULT()(DXGI_DDI_ARG_QUERYRESOURCERESIDENCY *) * pfnQueryResourceResidency;
HRESULT()(DXGI_DDI_ARG_ROTATE_RESOURCE_IDENTITIES *) * pfnRotateResourceIdentities;
HRESULT()(DXGI_DDI_ARG_BLT *) * pfnBlt;
HRESULT()(DXGI_DDI_ARG_RESOLVESHAREDRESOURCE *) * pfnResolveSharedResource;
HRESULT()(DXGI_DDI_ARG_BLT1 *) * pfnBlt1;
HRESULT()(DXGI_DDI_ARG_OFFERRESOURCES *) * pfnOfferResources;
HRESULT()(DXGI_DDI_ARG_RECLAIMRESOURCES *) * pfnReclaimResources;
HRESULT()(DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS *) * pfnGetMultiplaneOverlayCaps;
HRESULT()(DXGI_DDI_ARG_GETMULTIPLANEOVERLAYGROUPCAPS *) * pfnGetMultiplaneOverlayGroupCaps;
HRESULT()(void *) * pfnReserved1;
HRESULT()(DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY *) * pfnPresentMultiplaneOverlay;
HRESULT()(void *) * pfnReserved2;
HRESULT()(DXGI_DDI_ARG_PRESENT1 *) * pfnPresent1;
HRESULT()(DXGI_DDI_ARG_CHECKPRESENTDURATIONSUPPORT *) * pfnCheckPresentDurationSupport;
} DXGI1_3_DDI_BASE_FUNCTIONS;
メンバー
pfnPresent
ドライバーの PresentDXGI 関数へのポインター。
pfnGetGammaCaps
ドライバーの GetGammaCapsDXGI 関数へのポインター。
pfnSetDisplayMode
ドライバーの SetDisplayModeDXGI 関数へのポインター。
pfnSetResourcePriority
ドライバーの SetResourcePriorityDXGI 関数へのポインター。
pfnQueryResourceResidency
ドライバーの QueryResourceResidencyDXGI 関数へのポインター。
pfnRotateResourceIdentities
ドライバーの RotateResourceIdentitiesDXGI 関数へのポインター。
pfnBlt
ドライバーの BltDXGI 関数へのポインター。
pfnResolveSharedResource
ドライバーの ResolveSharedResourceDXGI 関数へのポインター。
pfnBlt1
ドライバーの Blt1DXGI 関数へのポインター。
pfnOfferResources
ドライバーの pfnOfferResources 関数へのポインター。
pfnReclaimResources
ドライバーの pfnReclaimResources 関数へのポインター。
pfnGetMultiplaneOverlayCaps
DXGI ランタイムによって呼び出され、ユーザー モード ディスプレイ ドライバーが基本的なオーバーレイ プレーン機能を取得するように要求します。 必要に応じて、WDDM 1.3 以降のユーザー モード ディスプレイ ドライバーによって実装されます。
pfnGetMultiplaneOverlayGroupCaps
DXGI ランタイムによって呼び出され、ユーザー モード ディスプレイ ドライバーがオーバーレイ プレーン機能のグループを取得するように要求します。 必要に応じて、WDDM 1.3 以降のユーザー モード ディスプレイ ドライバーによって実装されます。
構文
pfnGetMultiplaneOverlayGroupCaps GetMultiplaneOverlayGroupCaps;
HRESULT __stdcall* GetMultiplaneOverlayGroupCaps(
DXGI_DDI_ARG_GETMULTIPLANEOVERLAYGROUPCAPS *pGroupCaps
)
{ ... }
パラメーター
pGroupCaps オーバーレイ プレーン機能のグループを指定する DXGI_DDI_ARG_GETMULTIPLANEOVERLAYGROUPCAPS 構造体へのポインター。
戻り値
次のいずれかの値を返します。
- S_ok ドライバーは、オーバーレイ プレーン機能を正常に提供しました。
- D3DDDIERR_DEVICEREMOVED ドライバーがディスプレイ アダプターが削除されたことが検出されたため、ドライバーは操作を完了しませんでした。 ドライバーがアダプターの削除を認識していない場合、ドライバーは、このエラー コードを返す必要はありません。
pfnReserved1
システムで使用するために予約されています。
pfnPresentMultiplaneOverlay
Microsoft DirectX グラフィックス インフラストラクチャ (DXGI) ランタイムによって呼び出され、アプリケーションのレンダリングが完了したことをユーザー モード ディスプレイ ドライバーに通知し、ドライバーがコピーまたは反転によってソース サーフェイスを表示するか、ドライバーがカラーフィル操作を実行するように要求します。 マルチプレーン オーバーレイをサポートする Windows ディスプレイ ドライバー モデル (WDDM) 1.3 以降のドライバーで実装する必要があります。
ユーザー モード ディスプレイ ドライバーは、この関数の呼び出しの処理を正常に完了すると、 pfnPresentMultiPlaneOverlayCb (DXGI) 関数を呼び出すことによって、ソースサーフェイスをディスプレイに表示します。
PFND3DDDI_PRESENTMULTIPLANEOVERLAY pfnPresentMultiPlaneOverlay;
HRESULT __stdcall* pfnPresentMultiPlaneOverlay(
DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY *pPresentDXGI
)
{ ... }
パラメーター
pPresentDXGI 宛先サーフェスへの表示方法を説明する DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY 構造体へのポインター。
戻り値
このコールバック関数が成功すると、S_OKが返されます。 それ以外の場合は、HRESULT エラー コードが返されます。
pfnReserved2
システムで使用するために予約されています。
pfnPresent1
アプリケーションのレンダリングが完了し、共有リソースのすべての所有権が解放されたことをユーザー モード ディスプレイ ドライバーに通知し、ドライバーが移動先画面に表示されるように要求します。
構文
pfnPresent1 Present1DXGI;
HRESULT __stdcall* Present1DXGI(
DXGI_DDI_ARG_PRESENT1 *pPresentData
)
{ ... }
パラメーター
pPresentData [in] 宛先サーフェスに表示する方法を説明する DXGI_DDI_ARG_PRESENT1 構造体へのポインター。
注釈
pPresentData パラメーターが指すDXGI_DDI_ARG_PRESENT1構造体の hDevice メンバーは、ドライバーの CreateDevice(D3D10) 関数がD3D10DDIARG_CREATEDEVICE構造体の hDrvDevice メンバー内のランタイムに渡したのと同じハンドルです。 そのため、ドライバーライターは、このハンドルの種類を慎重に定義する必要があります。 さらに、ドライバーは、CreateDevice(D3D10) の呼び出しを処理した DDI 実装に基づいて、pfnPresent1(DXGI) 関数のさまざまな実装を提供できます。 ランタイムは、DDI 実装間でドライバー ハンドルを混在させることはありません。
DXGI_DDI_ARG_PRESENT1 の pDXGIContext メンバーは、不透明な通信メカニズムです。 ランタイムは、この DXGI コンテキストをドライバーに渡します。 ドライバーは、pfnPresentCbDXGI 関数を呼び出すときに、この DXGI コンテキストをDXGIDDICB_PRESENT構造体の pDXGIContext メンバーに変更せずにコピーする必要があります。
ドライバーは 、pfnRenderCb 関数を使用して部分的にビルドされたすべてのレンダー データ (コマンド バッファー) を送信する必要があります。また、ドライバーは pfnPresentCbDXGI を 1 回呼び出す必要があります。 これらのコールバックのいずれかを呼び出す場合、ドライバーは PresentDXGI 関数のスレッドルールに従う必要があります。
スレッドルール
これらの規則は、ドライバーがフリー スレッドをサポートするかどうかを適用します。
- ドライバーは、D3D11DDI_THREADING_CAPS構造体の Caps メンバーを D3D11DDICAPS_FREETHREADEDに設定することで、フリー スレッドのサポートを示します。 この場合、次のようになります。
- HCONTEXT コンテキスト ハンドルに対して一度に動作できるスレッドは 1 つだけです。
- ドライバーは、ドライバーの pfnPresent1 (DXGI) 関数が呼び出された場合、および pfnPresent1(DXGI) を呼び出したのと同じスレッドによってのみ、 pfnPresentCbDXGI を呼び出す必要があります。
- ドライバーがフリー スレッドのサポートを示していない場合は、スレッドがドライバーに呼び出されたときにのみコールバック関数を呼び出すことができます。 ドライバーは、pfnPresent1(DXGI) のコンテキスト内で pfnPresentCbDXGI コールバックを引き続き呼び出す必要があります。
pfnCheckPresentDurationSupport
ドライバーの pfnCheckPresentDurationSupport(DXGI) 関数へのポインター。
注釈
この構造体の使用方法の詳細については、「 DXGI DDI のサポート」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8.1、WDDM 1.3 以降 |
サポートされている最小のサーバー | Windows Server 2012 R2 |
Header | dxgiddi.h (D3d10umddi.h を含む) |