次の方法で共有


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 関数を呼び出すときに、この DXGI コンテキストをDXGIDDICB_PRESENT構造体の pDXGIContext メンバーに変更せずにコピーする必要があります。

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

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

スレッドルール

これらの規則は、ドライバーがフリー スレッドをサポートするかどうかを適用します。

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

pfnCheckPresentDurationSupport

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

注釈

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

要件

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

こちらもご覧ください

CreateDevice(D3D10)

D3D10DDIARG_CREATEDEVICE

DXGI1_2_DDI_BASE_FUNCTIONS

DXGI_DDI_BASE_ARGS

DXGI_DDI_BASE_FUNCTIONS