Risparmio energetico con il controllo VSync

Per risparmiare energia in un computer, il driver di visualizzazione in modalità kernel può ridurre il numero di interruzioni di aggiornamento del monitoraggio VSync che si verificano.

I processori e le piattaforme più recenti funzionano spesso con il sistema operativo per risparmiare energia quando il sistema computer è inattiva. Tuttavia, l'attività periodica del sistema, ad esempio l'attivazione di interruzioni, causa un picco di utilizzo della potenza e può impedire al sistema computer di immettere stati di sospensione temporanei che potrebbero risparmiare energia.

A partire da Windows Vista con Service Pack 1 (SP1) e Windows Server 2008, il sistema operativo può disattivare il conteggio degli interruzioni VSync periodici quando lo schermo non viene aggiornato da nuove attività grafiche o mouse. Controllando l'intervallo di interruzione VSync, il driver può risparmiare energia significativa.

È possibile sfruttare questa funzionalità ricompilando i driver Windows Display Driver Model (WDDM) usando Windows Server 2008 o versioni successive di Windows Driver Kit (WDK).

Windows Vista con le modifiche del driver SP1 per il controllo VSync

Per sfruttare questa funzionalità, i driver devono supportare il membro VSyncPowerSaveAware nella struttura DXGK_VIDSCHCAPS introdotta in Windows Vista con SP1. I driver esistenti che seguono WDDM devono essere ricompilati con il membro VSyncPowerSaveAware usando windows Server 2008 o versioni successive del WDK.

Un sistema Windows Vista con SP1 o versione successiva con un driver che segue WDDM e che supporta questa funzionalità disattiva la funzionalità di conteggio dell'interruzione VSync se non si verifica alcuna attività GPU per 10 periodi continui di 1/Vsync, dove VSync è la frequenza di aggiornamento del monitoraggio. Se la frequenza VSync è pari a 60 hertz (Hz), l'interruzione VSync si verifica una volta ogni 16 millisecondi. Pertanto, in assenza di un aggiornamento dello schermo, l'interruzione VSync viene disattivata dopo 160 millisecondi. Se l'attività GPU riprende, l'interruzione VSync viene attivata di nuovo per aggiornare la schermata.

requisiti Display-Only VSync per Windows 8 e versioni successive

In Windows 8 e versioni successive del sistema operativo Windows, è facoltativo per un driver di sola visualizzazione in modalità kernel (KMDOD) per supportare la funzionalità VSync, come indicato di seguito:

  • Il driver di sola visualizzazione supporta il controllo VSync

    Se kmDOD supporta la funzionalità di controllo VSync, deve implementare entrambe le funzioni DxgkDdiControlInterrupt e DxgkDdiGetScanLine e deve fornire puntatori di funzione validi a entrambe queste funzioni nella struttura KMDDOD_INITIALIZATION_DATA .

    In questo caso, il KMDOD deve implementare anche le funzioni DxgkDdiInterruptRoutine e DxgkDdiDpcRoutine per segnalare interruzioni VSync al sistema operativo.

    Inoltre, i valori della struttura pixelRate, hSyncFreq e vSyncFreq della struttura DISPLAYCONFIG_VIDEO_SIGNAL_INFO non possono essere D3DKMDT_FREQUENCY_NOTSPECIFIED.

  • Il driver di sola visualizzazione non supporta il controllo VSync

    Se kmDOD non supporta la funzionalità di controllo VSync, non deve implementare le funzioni DxgkDdiControlInterrupt o DxgkDdiGetScanLine e non deve fornire puntatori di funzione validi a una di queste funzioni nella struttura KMDDOD_INITIALIZATION_DATA .

    In questo caso, il sottosistema kernel grafico Microsoft DirectX simula i valori di interruzioni VSync e analizza le righe in base alla modalità corrente e all'ora dell'ultimo VSync simulato.

    Inoltre, i valori dei membri PixelRate, hSyncFreq e vSyncFreq della struttura DISPLAYCONFIG_VIDEO_SIGNAL_INFO devono essere impostati su D3DKMDT_FREQUENCY_NOTSPECIFIED.

Se queste condizioni non vengono soddisfatte, il sottosistema del kernel di grafica DirectX non caricherà il KMDOD.

Controllo del Registro di sistema

Per Windows Vista con SP1 e versioni successive dei sistemi operativi Windows, il timeout di inattività VSync predefinito è di 10 periodi VSync. Facoltativamente, a scopo di test, il timeout può essere controllato usando le impostazioni del Registro di sistema.

Importante

Per evitare problemi di compatibilità dell'applicazione, non modificare l'impostazione predefinita del Registro di sistema nei driver di produzione.

Percorso chiave:
RTL_REGISTRY_CONTROL\GraphicsDrivers\Scheduler

Percorso completo:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Scheduler]

Valore chiave:
VsyncIdleTimeout

Valuetype:
REG_DWORD

Valore:
10 = impostazione predefinita

Valore:
0 = disabilitare il controllo VSync (produce lo stesso comportamento di Windows Vista)