VidPN オブジェクトおよびインターフェイス

ビデオ プレゼンテーション ネットワーク (VidPN) マネージャーは、VidPN オブジェクトを使用して、ビデオの現在のソース、ビデオ の存在ターゲット、および表示モードの間の関連付けに関する情報を維持します。 詳細については、「 Video Present Networks の概要 」トピックを参照してください。

VidPN オブジェクト

VidPN オブジェクトには、次のサブオブジェクトが含まれています。

  • トポロジ

  • ソース モードセット

  • ターゲット モードセット

  • ソース モード セットを監視する

  • モニターの周波数範囲セット

  • 記述子セットを監視する

  • パス

  • source

  • 移行先

  • ソース モード

  • ターゲット モード

  • ソース モードの監視

次の図は、VidPN オブジェクトとそのサブオブジェクトを示しています。

VidPN オブジェクトとそのさまざまなサブオブジェクト (トポロジ、モード セット、パスなど) を示す図。

上の図は、特定の関連付けが一対一、一対多、多対一、多対多のいずれであるかを示しています。 たとえば、図は、ソースが複数のパスに属していても、ターゲットは 1 つのパスにのみ属できることを示しています。

図の青いオブジェクトはハンドルとインターフェイスを介してアクセスされ、灰色のオブジェクトには構造体ポインターを介してアクセスされます。 このコンテキストのインターフェイスは、関数ポインターを含む構造体です。 たとえば、 DXGK_VIDPNTOPOLOGY_INTERFACE 構造体には、ディスプレイ ミニポート ドライバーがトポロジ オブジェクトを検査および変更するために呼び出す関数 (VidPN マネージャーによって実装) へのポインターが含まれています。 ディスプレイ ミニポート ドライバーは、これらの関数のいずれかを呼び出すときに、トポロジ オブジェクトへのハンドルを指定する必要があります。 次の表に、VidPN オブジェクトとそのサブオブジェクトにアクセスするために使用されるハンドル、インターフェイス、ポインターのデータ型を示します。

Object Access メソッドとデータ型
VidPN (VidPN インターフェイス) ハンドルとインターフェイスを介してアクセスされます。 D3DKMDT_HVIDPN、 DXGK_VIDPN_INTERFACE
トポロジ (VidPN トポロジ インターフェイス) ハンドルとインターフェイスを介してアクセスされます。 D3DKMDT_HVIDPNTOPOLOGY、 DXGK_VIDPNTOPOLOGY_INTERFACE
ソース モード セット (VidPN ソース モード セット インターフェイス) ハンドルとインターフェイスを介してアクセスされます。 D3DKMDT_HVIDPNSOURCEMODESET、 DXGK_VIDPNSOURCEMODESET_INTERFACE
ターゲット モード セット (VidPN ターゲット モード セット インターフェイス) ハンドルとインターフェイスを介してアクセスされます。 D3DKMDT_HVIDPNTARGETMODESET、 DXGK_VIDPNTARGETMODESET_INTERFACE
ソース モード セットを監視する ハンドルとインターフェイスを介してアクセスされます。 D3DKMDT_HMONITORSOURCEMODESET、 DXGK_MONITORSOURCEMODESET_INTERFACE
パス 構造体ポインターを介してアクセスされます。 D3DKMDT_VIDPN_PRESENT_PATH
source 構造体ポインターを介してアクセスされます。 D3DKMDT_VIDEO_PRESENT_SOURCE
移行先 構造体ポインターを介してアクセスされます。 D3DKMDT_VIDEO_PRESENT_TARGET
ソース モード 構造体ポインターを介してアクセスされます。 D3DKMDT_VIDPN_SOURCE_MODE
ターゲット モード 構造体ポインターを介してアクセスされます。 D3DKMDT_VIDPN_TARGET_MODE
ソース モードの監視 構造体ポインターを介してアクセスされます。 D3DKMDT_MONITOR_SOURCE_MODE
モニターの周波数範囲セット 構造体ポインターを介してアクセスされます。 [DXGK_MONITORFREQUENCYRANGESET_INTERFACE
記述子セットを監視する 構造体ポインターを介してアクセスされます。 [DXGK_MONITORDESCRIPTORSET_INTERFACE

VidPN マネージャー

DirectX グラフィックス カーネル サブシステムのコンポーネントの 1 つである VidPN マネージャーは、VidPN を構築して維持するためにディスプレイ ミニポート ドライバーと連携します。 次の手順では、ディスプレイ ミニポート ドライバーがハンドルと VidPN オブジェクトへのインターフェイスを取得する方法について説明します。

  1. 初期化中、DirectX グラフィックス カーネル サブシステムは、ディスプレイ ミニポート ドライバーの DxgkDdiStartDevice 関数を 呼び出します。 この呼び出しは、DirectX グラフィックス カーネル サブシステムによって実装される関数へのポインターを含む DXGKRNL_INTERFACE 構造体をディスプレイ ミニポート ドライバーに提供します。 これらの関数の 1 つは DxgkCbQueryVidPnInterface です

  2. ある時点で、VidPN マネージャーはディスプレイ ミニポート ドライバーのヘルプを必要とするため、次のいずれかの関数を呼び出すことによって、VidPN オブジェクトへのハンドルをディスプレイ ミニポート ドライバーに提供します。

  3. ディスプレイ ミニポート ドライバーは、手順 2 で取得したハンドルを DxgkCbQueryVidPnInterface に渡します。このハンドルは、 DXGK_VIDPN_INTERFACE 構造体へのポインターを返します。

ディスプレイ ミニポート ドライバーは、ハンドルと VidPN オブジェクトへのインターフェイスを持つ後、プライマリ サブ オブジェクトへのハンドルとインターフェイス (必要に応じて) を取得できます:トポロジ、ソース モード セット、ターゲット モード セット、およびモニター ソース モード セット。 たとえば、ディスプレイ ミニポート ドライバーは 、pfnGetTopology (VidPN インターフェイスの関数の 1 つ) を呼び出して、VidPN トポロジ オブジェクトへのハンドルと 、DXGK_VIDPNTOPOLOGY_INTERFACE 構造体へのポインターを取得できます。

次の関数 (VidPN インターフェイス内) は、VidPN オブジェクトのプライマリ サブオブジェクトにハンドルとインターフェイスを提供します。

上記の一覧の 2 つの関数には、VidPN サブオブジェクトを解放する対応する関数があることに注意してください。

ディスプレイ ミニポート ドライバーは、ハンドルと VidPN プライマリ サブ オブジェクトのいずれかにインターフェイスを取得した後、インターフェイス関数を呼び出して、サブオブジェクトに関連するオブジェクトの記述子を取得できます。 たとえば、ハンドルとトポロジ オブジェクトへのインターフェイスを指定すると、ディスプレイ ミニポート ドライバーは、トポロジ内のすべてのパスの記述子を取得する次の手順を実行できます。

  1. VidPN トポロジ インターフェイス

    VidPN トポロジ インターフェイスの pfnAcquireFirstPathInfo 関数を呼び出して、トポロジの最初のパスを記述する D3DKMDT_VIDPN_PRESENT_PATH 構造体へのポインターを取得します。

  2. VidPN トポロジ インターフェイス

    pfnAcquireNextPathInfo 関数を繰り返し呼び出して、トポロジ内の残りのパスを記述するD3DKMDT_VIDPN_PRESENT_PATH構造体へのポインターを取得します。

同様に、ディスプレイ ミニポート ドライバーは、次のいずれかのモード セット インターフェイスの pfnAcquireFirstModeInfo 関数と pfnAcquireNextModeInfo 関数を呼び出すことによって、モード セット内のモードの記述子を取得できます。

DXGK_VIDPNSOURCEMODESET_INTERFACE インターフェイスには、ソース モード セットからモードを削除するための機能がないことに注意してください。 ディスプレイ ミニポート ドライバーがソース モード セットを更新する必要がある場合、モードを追加および削除することによって設定された既存のモードは変更されません。 代わりに、古いモード セットを置き換える新しいモード セットが作成されます。 モード セットを更新する必要がある関数の例として、ディスプレイ ミニポート ドライバーの DxgkDdiEnumVidPnCofuncModality 関数があります。 ソース モード セットの更新に関連する手順は次のとおりです。

  1. DXGK_VIDPNSOURCEMODESET_INTERFACE インターフェイスの pfnCreateNewModeInfo を呼び出して、(VidPN マネージャーによって割り当てられた) D3DKMDT_VIDPN_SOURCE_MODE構造体へのポインターを取得します。

    pfnAddMode を繰り返し呼び出して、ソース モード セットにモードを追加します。

  2. DXGK_VIDPN_INTERFACEpfnAssignSourceModeSet 関数を呼び出して、特定のビデオ 存在ソースに新しいモード セットを割り当てます。 新しいソース モード セットは、現在そのソースに割り当てられているソース モード セットを置き換えます。

ターゲット モード セットの更新は、ソース モード セットの更新と似ています。 DXGK_VIDPNTARGETMODESET_INTERFACE インターフェイスには、次の関数があります。

特定のパスに属するソースとターゲットを取得するためのインターフェイス (関数のセット) はありません。 ディスプレイ ミニポート ドライバーは、パスを表すD3DKMDT_VIDPN_PRESENT_PATH構造体の VidPnSourceId および VidPnTargetId メンバーを調べることによって、特定のパスに属するソースとターゲットを判断できます。

こちらもご覧ください

ディスプレイ アダプターで VidPN がサポートされているかどうかを判断する

Cofunctional VidPN ソースおよびターゲット モードの列挙

ビデオ表現ネットワークの用語

追加のモニター ターゲット モードの取得