次の方法で共有


VSync 制御による省エネ

コンピューターの電力を節約するために、カーネル モード ディスプレイ ドライバーは、発生する VSync モニターの更新割り込みの数を減らすことができます。

新しいプロセッサやプラットフォームは、多くの場合、オペレーティング システムと連携して、コンピューター システムがアイドル状態のときにエネルギーを節約します。 ただし、割り込みの発生などの定期的なシステム アクティビティは、ピーク時の電力使用量を引き起こし、コンピューター システムがエネルギーを節約する一時的なスリープ状態になるのを妨げる場合があります。

Windows Vista Service Pack 1 (SP1) および Windows Server 2008 以降では、画面が新しいグラフィックスやマウスのアクティビティによって更新されないときに、オペレーティング システムは定期的な VSync 割り込みカウントをオフにできます。 VSync 割り込み間隔を制御することで、ドライバーはエネルギーを大幅に節約できます。

Windows Server 2008 以降のバージョンの Windows Driver Kit (WDK) を使用して Windows Display Driver Model (WDDM) ドライバーを再構築することで、この機能を利用できます。

Windows Vista with SP1 VSync コントロールに対するドライバーの変更

ドライバーがこの機能を利用するには、Windows Vista with SP1 で導入された DXGK_VIDSCHCAPS 構造体の VSyncPowerSaveAware メンバーがサポートされている必要があります。 WDDM に従う既存のドライバーは、Windows Server 2008 以降のバージョンの WDK を使用して、VSyncPowerSaveAware で再コンパイルする必要があります。

WDDM に従い、この機能をサポートしているドライバーを備えた WINDOWS Vista SP1 以降のシステムでは、1/Vsync (VSync はモニターの更新頻度) の 10 回の連続周期で GPU アクティビティが発生しない場合、VSync 割り込みのカウント機能がオフになります。 VSync レートが 60 ヘルツ (Hz) の場合、VSync 割り込みは 16 ミリ秒ごとに 1 回発生します。 したがって、画面の更新がない場合、VSync 割り込みは 160 ミリ秒後にオフになります。 GPU アクティビティが再開されると、VSync 割り込みが再びオンになり、画面が更新されます。

ディスプレイ専用 VSync Windows 8 以降のバージョンの要件

Windows 8 以降のバージョンの Windows オペレーティング システムでは、次のように、カーネル モードディスプレイ専用ドライバー (KMDOD) で VSync 機能をサポートするオプションがあります。

  • ディスプレイ専用ドライバーは、VSync コントロールをサポートしています

    KMDOD が VSync コントロール機能をサポートしている場合は、DxgkDdiControlInterrupt 関数と DxgkDdiGetScanLine 関数の両方を実装し、KMDDOD_INITIALIZATION_DATA 構造体のこれらの両方の関数に有効な関数ポインターを指定する必要があります。

    この場合、KMDOD は、オペレーティング システムに VSync 割り込みを報告するために、DxgkDdiInterruptRoutine 関数と DxgkDdiDpcRoutine 関数も実装する必要があります。

    さらに、DISPLAYCONFIG_VIDEO_SIGNAL_INFO 構造体の PixelRatehSyncFreq、および vSyncFreq メンバーの値を D3DKMDT_FREQUENCY_NOTSPECIFIED にすることはできません。

  • ディスプレイ専用ドライバーは、VSync コントロールをサポートしていません

    KMDOD が VSync コントロール機能をサポートしていない場合は、DxgkDdiControlInterrupt 関数または DxgkDdiGetScanLine 関数のどちらもを実装する必要はありません。KMDDOD_INITIALIZATION_DATA 構造体のこれらの関数のどちらにも有効な関数ポインターを指定する必要はありません。

    この場合、Microsoft DirectX グラフィックス カーネル サブシステムは、現在のモードと最後にシミュレートされた VSync の時刻に基づいて、VSync 割り込みとスキャンラインの値をシミュレートします。

    さらに、DISPLAYCONFIG_VIDEO_SIGNAL_INFO 構造体の PixelRatehSyncFreq、および vSyncFreq メンバーの値を D3DKMDT_FREQUENCY_NOTSPECIFIED に設定する必要があります。

上記の条件が満たされない場合、DirectX グラフィックス カーネル サブシステムは KMDOD を読み込みません。

レジストリ コントロール

Windows Vista with SP1 以降のバージョンの WINDOWS オペレーティング システムの場合、既定の VSync アイドル タイムアウトは 10 VSync 期間です。 必要に応じて、テスト目的で、レジストリ設定を使用してタイムアウトを制御できます。

重要

アプリケーションの互換性の問題を回避するには、運用ドライバーの既定のレジストリ設定を変更しないでください。

キーのパス:
RTL_REGISTRY_CONTROL\GraphicsDrivers\Scheduler

完全なパス:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Scheduler]

キーの値:
VsyncIdleTimeout

ValueType:
REG_DWORD

値:
10 = 既定値

値:
0 = VSync コントロールを無効にする (Windows Vista と同じ動作が生成されます)