DXGK_FLIPCAPS 構造体 (d3dkmddi.h)
DXGK_FLIPCAPS構造体は、DxgkDdiQueryAdapterInfo 関数の呼び出しを通じてドライバーが提供するディスプレイ ミニポート ドライバーの反転機能を識別します。
構文
typedef struct _DXGK_FLIPCAPS {
union {
struct {
UINT FlipOnVSyncWithNoWait : 1;
UINT FlipOnVSyncMmIo : 1;
UINT FlipInterval : 1;
UINT FlipImmediateMmIo : 1;
UINT FlipIndependent : 1;
UINT DdiPresentForIFlip : 1;
UINT FlipImmediateOnHSync : 1;
#if ...
UINT Reserved : 25;
#elif
UINT Reserved : 27;
#else
UINT Reserved : 28;
#endif
};
UINT Value;
};
} DXGK_FLIPCAPS;
メンバー
FlipOnVSyncWithNoWait
ドライバーが、垂直同期が発生するまでグラフィックス パイプラインが停止することなく、次の垂直リトレース期間 (垂直同期) に有効になるフリップ コマンドのスケジュール設定をサポートするかどうかを指定する UINT 値。 つまり、グラフィックス パイプラインは、ドライバーが反転サーフェスの物理アドレスをハードウェアでフリップ保留中のレジスタに書き込んだ直後に続行する必要があります。 ほとんどのハードウェアでは 1 つのフリップ ペンディング レジスタの深さが使用されますが、ハードウェアで複数のフリップ保留中レジスタが使用されている場合、ドライバーは、DXGK_DRIVERCAPS構造体の MaxQueuedFlipOnVSync メンバーに番号を指定する必要があります。
FlipOnVSyncWithNoWait が 1 (TRUE) に設定されている場合、ドライバーはこのメカニズムをサポートします。 FlipOnVSyncWithNoWait が 0 (FALSE) に設定されている場合、ドライバーはこのメカニズムをサポートしていません。 つまり、グラフィックス パイプラインは、次の垂直同期で有効になるフリップ コマンドのスケジュールの後、次の垂直同期が発生するまで待機する必要があります。
このメンバーの設定は、32 ビット 値 メンバー (0x00000001) の最初のビットを設定することと同じです。
FlipOnVSyncMmIo
ドライバーが、次の垂直同期に有効なメモリ マップ I/O (MMIO) ベースのフリップをサポートするかどうかを指定する UINT 値。この種類のフリップをサポートするには、ディスプレイ ミニポート ドライバーは、次の操作をサポートする必要があります。
- DxgkDdiPresent 関数の呼び出しで渡す DMA バッファーの生成はありません (つまり、NULL は、DXGKARG_PRESENT構造体の pDmaBuffer メンバーで渡されます)。
- デバイス割り込み要求レベル (DIRQL) での DxgkDdiSetVidPnSourceAddress 関数の呼び出しを反転します。 DxgkDdiSetVidPnSourceAddress の呼び出しで、ドライバーはデジタルアナログ コンバーター (DAC) をプログラムし、DXGKARG_SETVIDPNSOURCEADDRESS構造体の PrimaryAddress メンバーの値を使用してスキャンを開始する必要があります。垂直同期の後、ドライバーは、DXGKARGCB_NOTIFY_INTERRUPT_DATA構造体の InterruptType メンバーに設定されたDXGK_INTERRUPT_CRTC_VSYNC値を使用して DxgkCbNotifyInterrupt 関数を呼び出して、有効なスキャン アドレスを報告するように GPU スケジューラに通知する必要があります。 その後、ドライバーは DxgkCbNotifyDpc 関数を呼び出して、ほとんどのスキャンアウト処理を実行する必要があります。
FlipInterval
ドライバーが 2 つ、3 つ、または 4 つの垂直同期が発生した後に有効になるフリップ コマンドのスケジュールをサポートするかどうかを指定する UINT 値。 ドライバーが 2 つ以上のフリップ間隔をサポートしているかどうかに関係なく、ドライバーは即時反転と 1 の反転間隔をサポートする必要があります。
このメンバーの設定は、32 ビット Value メンバー (0x00000004) の 3 番目のビットを設定することと同じです。
FlipImmediateMmIo
ドライバーがメモリ マップ I/O (MMIO) ベースのイミディエイト フリップをサポートするかどうかを指定する UINT 値。 この種類のフリップは、次の垂直同期が発生するのを待たずに、ドライバーの DxgkDdiSetVidPnSourceAddress 関数の呼び出しの直後に有効になります。
このメンバーの設定は、32 ビット Value メンバー (0x00000008) の 4 番目のビットを設定することと同じです。
Windows 7 以降でサポートされています。
FlipIndependent
ドライバーが独立した反転をサポートするかどうかを指定する UINT 値。 WDDM 1.3 以降のドライバーでは、このメンバーを 1 に設定する必要があります。
独立したフリップでは、オペレーティング システムはデスクトップ ウィンドウ マネージャー (DWM) ユーザー モードのプレゼンテーション呼び出しをバイパスしようと試み、Direct Flip およびマルチプレーン オーバーレイ プレゼンテーション モデルで DxgkDdiPresent と DxgkDdiSetVidPnSourceAddress を呼び出すことによって、アプリケーション バック バッファーに反転します。
FlipIndependent が設定されている場合でも、DWM ユーザー モードの現在の呼び出しが行われる場合があることに注意してください。 ドライバーは引き続きこのようなケースを処理する必要があります。
このメンバーの設定は、32 ビット Value メンバー (0x00000010) の 5 番目のビットを設定することと同じです。
Windows 8.1 以降でサポートされます。
DdiPresentForIFlip
FlipImmediateOnHSync
Reserved
このメンバーは予約済みであり、0 に設定する必要があります。 このメンバーを 0 に設定することは、32 ビット Value メンバーの残りの 27 ビット (0xFFFFFFE0) を ゼロに設定することと同じです。
このメンバーは予約済みであり、0 に設定する必要があります。 このメンバーを 0 に設定することは、32 ビット Value メンバーの残りの 28 ビット (0xFFFFFFF0) を ゼロに設定することと同じです。
Value
反転機能を識別する 32 ビット値を保持できる、DXGK_FLIPCAPSに含まれる共用体内のメンバー。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
Header | d3dkmddi.h (D3dkmddi.h を含む) |