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 関数を呼び出すときに、DXGIDDICB_PRESENT 構造体の pDXGIContext メンバーに変更せずに、この DXGI コンテキストをコピーする必要があります。
ドライバーは、pfnRenderCb 関数を使用して、部分的に構築されたすべてのレンダー データ (コマンド バッファー) を送信する必要があります。また、ドライバーは pfnPresentCbDXGI 1 回呼び出す必要があります。 これらのコールバックのいずれかを呼び出すとき、ドライバーは、PresentDXGI 関数のスレッドルールに従う必要があります。
スレッドルール
これらの規則は、ドライバーが無料のスレッド処理をサポートしているかどうかを適用します。
- ドライバーは、D3D11DDI_THREADING_CAPS 構造体の Caps メンバーを D3D11DDICAPS_FREETHREADEDに設定することで、フリー スレッドのサポートを示します。 この場合:
- HCONTEXT コンテキスト ハンドルに対して一度に動作できるスレッドは 1 つだけです。
- ドライバーは、ドライバーの pfnPresent1(DXGI) 関数が呼び出された場合にのみ、pfnPresentCbDXGI を呼び出す必要があります。また、pfnPresent1(DXGI)呼び出したのと同じスレッドによって呼び出されます。
- ドライバーがフリー スレッドのサポートを示していない場合は、スレッドがドライバーに呼び出されたときにのみコールバック関数を呼び出すことができます。 また、pfnPresent1(DXGI) のコンテキスト内で、pfnPresentCbDXGI コールバック呼び出す必要があります。
pfnCheckPresentDurationSupport
ドライバーの pfnCheckPresentDurationSupport(DXGI) 関数へのポインター。
備考
この構造体の使用方法の詳細については、DXGI DDI のサポートを参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8.1、WDDM 1.3 以降 |
サポートされる最小サーバー | Windows Server 2012 R2 |
ヘッダー | dxgiddi.h (D3d10umddi.h を含む) |