Newer processors and platforms provide opportunities for the operating system to conserve energy when the computer system is idle. However, periodic system activity such as the firing of interrupts results in peak power usage and prevents the computer system from entering transient sleep states that would conserve energy.
Beginning with Windows Vista Service Pack 1, the operating system can turn off periodic VSync interrupt counting when the screen is not being refreshed from new graphics or mouse activity, where VSync represents the monitor refresh rate. Controlling the VSync interrupt interval can result in significant energy savings.
Windows Vista SP1 provides new functionality for disabling the VSync interrupt. To take advantage of this feature, Windows Display Driver Model (WDDM) drivers must support the new VSyncPowerSaveAware flag in the DXGK_VIDSCHCAPS structure, as highlighted in the following code sample. Existing WDDM drivers must be recompiled with this new flag by using the Windows Server 2008 Windows Driver Kit (WDK; this is the version that also supports changes in Windows Vista SP1). This flag is found in the D3dkmddi.h header in the WDK:
typedef struct _DXGK_VIDSCHCAPS;
union
{
struct
{
UINT MultiEngineAware :1;
UINT VSyncPowerSaveAware :1;
UINT Reserved :30;
};
UINT Value;
};
DXGK_VIDSCHCAPS;
On a PC system running Windows Vista SP1 with WDDM drivers that support this new feature, Windows turns off the counting of the VSync interrupt if no graphics processing unit (GPU) activity occurs for 10 continuous periods of 1/VSync. If the VSync is 60 hertz (Hz), the VSync interrupt occurs once every 16 milliseconds. Thus, in the absence of a screen update, the VSync interrupt is turned off after 160 milliseconds. If GPU activity resumes, the VSync interrupt is turned on again to refresh the screen.
For Windows Vista SP1, the default VSync Idle time-out is 10 VSync periods. Optionally, the time-out can be controlled through the registry for testing purposes.
Important: We strongly recommend that this default registry setting is not changed in shipping systems, because a change from this default could lead to application compatibility problems.
Key: RTL_REGISTRY_CONTROL\GraphicsDrivers\Scheduler
KeyValue: VSyncIdleTimeout
ValueType: REG_DWORD
Value: 10 = default; 0 = disable VSync control (same behavior same as Windows Vista Gold)
Windows Vista SP1 provides a new power-saving feature by reducing the number of interrupts occurring on the PC system. Newer platforms can take advantage of this VSync control feature through WDDM drivers that have been rebuilt by using the Windows Server 2008 WDK or subsequent WDK editions.
Windows Driver Kit (WDK)
How to obtain: http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx
WDDM documentation online: http://msdn2.microsoft.com/en-us/library/ms796755.aspx
Queries
If you have additional questions, please send e-mail to: directx@microsoft.com
Document History
November 30, 2007: First publication