最近のプロセッサおよびプラットフォームは、コンピュータ システムがアイドル状態の場合に、オペレーティング システムがエネルギーを節約する機能を提供します。ただし、割り込みの実行など定期的なシステム活動は、電力使用がピーク状態になり、コンピュータ システムが一時的なスリープ状態に入ることができず、エネルギー節約の妨げとなります。
Windows Vista Service Pack 1 (SP1) より、新しいグラフィックスまたはマウスの動作により画面の内容が更新されていないとき、オペレーティング システムは定期的な VSync 割り込みカウントを無効にできます。VSync は、モニタのリフレッシュ レートを表します。VSync 割り込み間隔の制御により、大幅にエネルギーを節約できる可能性があります。
Windows Vista SP1 は、VSync 割り込みを無効にする新機能を提供します。この機能を活用するには、Windows Display Driver Model (WDDM) ドライバは、下記のコード サンプルで強調されているように、DXGK_VIDSCHCAPS 構造体の新しい VSyncPowerSaveAware フラグをサポートする必要があります。Windows Server 2008 用の Windows Driver Kit (WDK、Windows Vista SP1 での変更もサポートするバージョン) を使用して、この新しいフラグを含める形で、既存の WDDM ドライバを再コンパイルする必要があります。このフラグは、WDK の D3dkmddi.h ヘッダーにあります。
typedef struct _DXGK_VIDSCHCAPS;
union
{
struct
{
UINT MultiEngineAware :1;
UINT VSyncPowerSaveAware :1;
UINT Reserved :30;
};
UINT Value;
};
DXGK_VIDSCHCAPS;
この新機能をサポートする WDDM ドライバを備えた Windows Vista SP1 を実行している PC システムで、グラフィックス処理装置 (GPU) の活動が 1/VSync の 10 回分の連続した期間生じない場合、Windows は VSync 割り込みのカウントを無効にします。たとえば、VSync が 60 Hz の場合、VSync 割り込みは、16 ミリ秒ごとに生じます。したがって、画面の更新がない場合、VSync 割り込みは、160 ミリ秒後に無効となります。GPU の活動が再開すると、VSync 割り込みは、画面の内容を更新するため、再び有効となります。
Windows Vista SP1 の場合、既定の VSync Idle タイムアウトは、VSync 10 回分の期間です。オプションで、テスト用に、タイムアウトはレジストリを通じて制御できます。
重要 : この既定値を変更すると、アプリケーションで互換性の問題が起きる可能性があるので、システム出荷時には、この既定のレジストリ設定を変更しないことを強くお勧めします。
Key: RTL_REGISTRY_CONTROL\GraphicsDrivers\Scheduler
KeyValue: VSyncIdleTimeout
ValueType: REG_DWORD
Value: 10 = 既定値、0 = VSync 制御の無効化 (Windows Vista Gold と同じ動作)
Windows Vista SP1 は、PC システムで生じる割り込みの回数を減らすことにより、新しい省電力機能を提供します。最近のプラットフォームは、Windows Server 2008 用の WDK または後続の WDK エディションを使用して再ビルドされた WDDM ドライバにより、この VSync 制御機能を活用できます。
Windows Driver Kit (WDK)
入手方法 : http://www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx
WDDM ドキュメント オンライン : http://msdn2.microsoft.com/en-us/library/ms796755.aspx
ご質問
ご質問については、電子メールを directx@microsoft.com (英語) までお送りください。 directx@microsoft.com
ドキュメントの履歴
2007 年 11 月 30 日 : 初版