使用 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) 驅動程式,以利用此功能。
具有 VSync 控制項 SP1 驅動程式變更的 Windows Vista
若要讓驅動程式利用這項功能,它們必須支援 Windows Vista 中透過 SP1 引進的 DXGK_VIDSCHCAPS結構中的VSyncPowerSaveAware成員。 遵循 WDDM 的現有驅動程式必須使用 Windows Server 2008 或更新版本的 WDK,以 VSyncPowerSaveAware 成員重新編譯。
Windows Vista 的 SP1 或更新版本系統具有遵循 WDDM 的驅動程式,且支援此功能的驅動程式將會關閉 VSync 中斷的計數功能,如果 VSync 活動未在 1/Vsync 的 10 個連續期間內發生,其中 VSync 是監視器重新整理速率。 如果 VSync 速率為 60 hertz (Hz) ,則 VSync 中斷會每隔 16 毫秒發生一次。 因此,如果沒有螢幕更新,VSync 中斷會在 160 毫秒後關閉。 如果 GPU 活動繼續,則會再次開啟 VSync 中斷以重新整理畫面。
Display-Only Windows 8 和更新版本的 VSync 需求
在Windows 8和更新版本的 Windows 作業系統中,對於核心模式僅限顯示驅動程式 (KMDOD) ,可以選擇性地支援 VSync 功能,如下所示:
僅限顯示驅動程式支援 VSync 控制項
如果 KMDOD 支援 VSync 控制功能,它必須同時實作 DxgkDdiControlInterrupt 和 DxgkDdiGetScanLine 函式,而且必須在 KMDDOD_INITIALIZATION_DATA 結構中提供這兩個函式的有效函式指標。
在此情況下,KMDOD 也必須實作 DxgkDdiInterruptRoutine 和 DxgkDdiDpcRoutine 函式,才能向作業系統報告 VSync 中斷。
此外,無法D3DKMDT_FREQUENCY_NOTSPECIFIEDDISPLAYCONFIG_VIDEO_SIGNAL_INFO結構的PixelRate、hSyncFreq和vSyncFreq成員的值。
僅限顯示驅動程式不支援 VSync 控制項
如果 KMDOD 不支援 VSync 控制項功能,它不得實作 DxgkDdiControlInterrupt 或 DxgkDdiGetScanLine 函式,而且不得在 KMDDOD_INITIALIZATION_DATA 結構中提供這些函式的有效函式指標。
在此情況下,Microsoft DirectX 圖形核心子系統會根據目前的模式和上次模擬 VSync 的時間,模擬 VSync 中斷和掃描行的值。
此外,DISPLAYCONFIG_VIDEO_SIGNAL_INFO 結構的PixelRate、hSyncFreq 和 vSyncFreq成員的值必須設定為D3DKMDT_FREQUENCY_NOTSPECIFIED。
如果不符合這些條件,DirectX 圖形核心子系統將不會載入 KMDOD。
登錄控制
若為 Windows Vista 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 相同的行為)