次の方法で共有


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_PRESENT1pDXGIContext メンバーは、不透明な通信メカニズムです。 ランタイムは、この DXGI コンテキストをドライバーに渡します。 ドライバーは、pfnPresentCbDXGI 関数を呼び出すときに、DXGIDDICB_PRESENT 構造体の pDXGIContext メンバーに変更せずに、この DXGI コンテキストをコピーする必要があります。

ドライバーは、pfnRenderCb 関数を使用して、部分的に構築されたすべてのレンダー データ (コマンド バッファー) を送信する必要があります。また、ドライバーは pfnPresentCbDXGI 1 回呼び出す必要があります。 これらのコールバックのいずれかを呼び出すとき、ドライバーは、PresentDXGI 関数のスレッドルールに従う必要があります。

ドライバーの pfnPresent1(DXGI) 関数が sRGB 形式のコンテンツをソース サーフェスから sRGB 以外の変換先サーフェスにコピーする場合、ドライバーは sRGB コンテンツを変更せずにコピーする必要があります (つまり、ドライバーは sRGB から線形変換を実行しないでください)。

スレッドルール

これらの規則は、ドライバーが無料のスレッド処理をサポートしているかどうかを適用します。

  • ドライバーは、D3D11DDI_THREADING_CAPS 構造体の Caps メンバーを D3D11DDICAPS_FREETHREADEDに設定することで、フリー スレッドのサポートを示します。 この場合:
    • HCONTEXT コンテキスト ハンドルに対して一度に動作できるスレッドは 1 つだけです。
    • ドライバーは、ドライバーの pfnPresent1(DXGI) 関数が呼び出された場合にのみ、pfnPresentCbDXGI を呼び出す必要があります。また、pfnPresent1(DXGI)呼び出したのと同じスレッドによって呼び出されます。
  • ドライバーがフリー スレッドのサポートを示していない場合は、スレッドがドライバーに呼び出されたときにのみコールバック関数を呼び出すことができます。 また、pfnPresent1(DXGI) のコンテキスト内で、pfnPresentCbDXGI コールバック呼び出す必要があります。
スレッド処理の詳細については、「Direct3D 10からの変更」を参照してください。

pfnCheckPresentDurationSupport

ドライバーの pfnCheckPresentDurationSupport(DXGI) 関数へのポインター。

備考

この構造体の使用方法の詳細については、DXGI DDI のサポートを参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 8.1、WDDM 1.3 以降
サポートされる最小サーバー Windows Server 2012 R2
ヘッダー dxgiddi.h (D3d10umddi.h を含む)

関連項目

CreateDevice(D3D10)

D3D10DDIARG_CREATEDEVICE

DXGI1_2_DDI_BASE_FUNCTIONS

DXGI_DDI_BASE_ARGS

DXGI_DDI_BASE_FUNCTIONS