Économie d’énergie avec le contrôle VSync
Pour économiser l’alimentation d’un ordinateur, votre pilote d’affichage en mode noyau peut réduire le nombre d’interruptions d’actualisation du moniteur VSync qui se produisent.
Les processeurs et plateformes plus récents fonctionnent souvent avec le système d’exploitation pour économiser l’énergie lorsque le système informatique est inactif. Toutefois, l’activité périodique du système, telle que le déclenchement d’interruptions, provoque un pic d’utilisation de l’énergie et peut empêcher le système informatique d’entrer dans des états de veille temporaires qui économiseraient l’énergie.
À compter de Windows Vista avec Service Pack 1 (SP1) et Windows Server 2008, le système d’exploitation peut désactiver le comptage périodique des interruptions VSync lorsque l’écran n’est pas actualisé à partir d’une nouvelle activité graphique ou souris. En contrôlant l’intervalle d’interruption VSync, votre pilote peut économiser beaucoup d’énergie.
Vous pouvez tirer parti de cette fonctionnalité en reconstruisant les pilotes WDDM (Windows Display Driver Model) à l’aide de Windows Server 2008 ou versions ultérieures du Kit de pilotes Windows (WDK).
Windows Vista avec modifications du pilote SP1 pour le contrôle VSync
Pour que les pilotes tirent parti de cette fonctionnalité, ils doivent prendre en charge le membre VSyncPowerSaveAware dans la structure DXGK_VIDSCHCAPS qui a été introduite dans Windows Vista avec SP1. Les pilotes existants qui suivent le WDDM doivent être recompilés avec le membre VSyncPowerSaveAware à l’aide de Windows Server 2008 ou versions ultérieures du WDK.
Un système Windows Vista avec SP1 ou version ultérieure avec un pilote qui suit WDDM et qui prend en charge cette fonctionnalité désactive la fonctionnalité de comptage de l’interruption VSync si aucune activité GPU ne se produit pendant 10 périodes continues de 1/Vsync, où VSync est le taux d’actualisation du moniteur. Si la fréquence VSync est de 60 hertz (Hz), l’interruption VSync se produit une fois toutes les 16 millisecondes. Ainsi, en l’absence d’une mise à jour de l’écran, l’interruption VSync est désactivée après 160 millisecondes. Si l’activité GPU reprend, l’interruption VSync est à nouveau activée pour actualiser l’écran.
configuration requise pour Display-Only VSync pour les versions Windows 8 et ultérieures
Dans Windows 8 et versions ultérieures du système d’exploitation Windows, il est facultatif qu’un pilote d’affichage seul en mode noyau (KMDOD) prend en charge la fonctionnalité VSync, comme suit :
Le pilote d’affichage uniquement prend en charge le contrôle VSync
Si KMDOD prend en charge la fonctionnalité de contrôle VSync, il doit implémenter les fonctions DxgkDdiControlInterrupt et DxgkDdiGetScanLine et doit fournir des pointeurs de fonction valides vers ces deux fonctions dans la structure KMDDOD_INITIALIZATION_DATA .
Dans ce cas, le KMDOD doit également implémenter les fonctions DxgkDdiInterruptRoutine et DxgkDdiDpcRoutine afin de signaler les interruptions VSync au système d’exploitation.
En outre, les valeurs des membres PixelRate, hSyncFreq et vSyncFreq de la structure DISPLAYCONFIG_VIDEO_SIGNAL_INFO ne peuvent pas être D3DKMDT_FREQUENCY_NOTSPECIFIED.
Le pilote d’affichage uniquement ne prend pas en charge le contrôle VSync
Si KMDOD ne prend pas en charge la fonctionnalité de contrôle VSync, il ne doit pas implémenter les fonctions DxgkDdiControlInterrupt ou DxgkDdiGetScanLine et ne doit pas fournir de pointeurs de fonction valides vers l’une de ces fonctions dans la structure KMDDOD_INITIALIZATION_DATA .
Dans ce cas, le sous-système du noyau graphique Microsoft DirectX simule les valeurs des interruptions VSync et des lignes d’analyse en fonction du mode actuel et de l’heure du dernier VSync simulé.
En outre, les valeurs des membres PixelRate, hSyncFreq et vSyncFreq de la structure DISPLAYCONFIG_VIDEO_SIGNAL_INFO doivent être définies sur D3DKMDT_FREQUENCY_NOTSPECIFIED.
Si ces conditions ne sont pas remplies, le sous-système du noyau graphique DirectX ne charge pas le KMDOD.
Contrôle du Registre
Pour Windows Vista avec SP1 et versions ultérieures des systèmes d’exploitation Windows, le délai d’inactivité VSync par défaut est de 10 périodes VSync. Si vous le souhaitez, à des fins de test, le délai d’attente peut être contrôlé à l’aide des paramètres du Registre.
Important
Pour éviter les problèmes de compatibilité des applications, ne modifiez pas le paramètre de Registre par défaut dans les pilotes de production.
Chemin de la clé :
RTL_REGISTRY_CONTROL\GraphicsDrivers\Scheduler
Chemin d’accès complet :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Scheduler]
Valeur de clé :
VsyncIdleTimeout
Valuetype:
REG_DWORD
Valeur :
10 = par défaut
Valeur :
0 = désactiver le contrôle VSync (produit le même comportement que Windows Vista)