Поделиться через


Экономия энергии с помощью управления VSync

Чтобы сэкономить питание компьютера, драйвер отображения в режиме ядра может сократить количество прерываний обновления монитора VSync.

Более новые процессоры и платформы часто работают с операционной системой, чтобы экономить энергию, когда компьютерная система простаит. Однако периодические действия системы, такие как срабатывание прерываний, приводят к пиковой загрузке энергии и могут препятствовать переходу компьютерной системы в временные спящие состояния, которые позволят сэкономить энергию.

Начиная с Windows Vista с пакетом обновления 1 (SP1) и Windows Server 2008, операционная система может отключить периодический подсчет прерываний VSync, если экран не обновляется из-за новой графики или мыши. Управляя интервалом прерывания VSync, драйвер может значительно сэкономить энергию.

Вы можете воспользоваться этой функцией, перестроив драйверы модели WDDM с помощью Windows Server 2008 или более поздних версий комплекта драйверов Windows (WDK).

Изменения драйвера Windows Vista с пакетом обновления 1 (SP1) для управления VSync

Чтобы воспользоваться этой функцией, драйверы должны поддерживать член VSyncPowerSaveAware в структуре DXGK_VIDSCHCAPS , которая появилась в Windows Vista с пакетом обновления 1 (SP1). Существующие драйверы, следующие за WDDM, необходимо перекомпилировать с элементом VSyncPowerSaveAware с помощью Windows Server 2008 или более поздних версий WDK.

Система Windows Vista с пакетом обновления 1 (SP1) или более поздней версии с драйвером, который следует за WDDM и который поддерживает эту функцию, отключит функцию подсчета прерывания виртуальной синхронизации, если в течение 10 непрерывных периодов 1/Vsync не происходит никаких действий GPU, где VSync — это частота обновления монитора. Если скорость VSync составляет 60 Гц, прерывание VSync происходит один раз каждые 16 миллисекунд. Таким образом, при отсутствии обновления экрана прерывание VSync отключается через 160 миллисекунда. Если активность GPU возобновляется, прерывание VSync снова включается для обновления экрана.

требования Display-Only VSync для Windows 8 и более поздних версий

В Windows 8 и более поздних версиях операционной системы Windows драйвер только для отображения в режиме ядра (KMDOD) является необязательным для поддержки функций VSync следующим образом:

  • Драйвер только для отображения поддерживает управление VSync

    Если KMDOD поддерживает функцию управления VSync, она должна реализовывать функции DxgkDdiControlInterrupt и DxgkDdiGetScanLine и предоставлять допустимые указатели на функции для обеих этих функций в структуре KMDDOD_INITIALIZATION_DATA .

    В этом случае KMDOD также должен реализовать функции DxgkDdiInterruptRoutine и DxgkDdiDpcRoutine , чтобы сообщать о прерываниях VSync операционной системе.

    Кроме того, нельзя D3DKMDT_FREQUENCY_NOTSPECIFIED значения элементов PixelRate, hSyncFreq и vSyncFreq структуры DISPLAYCONFIG_VIDEO_SIGNAL_INFO.

  • Драйвер только для отображения не поддерживает управление VSync

    Если KMDOD не поддерживает функцию управления VSync, она не должна реализовывать функции DxgkDdiControlInterrupt или DxgkDdiGetScanLine и не должна предоставлять допустимые указатели на функции в структуре KMDDOD_INITIALIZATION_DATA .

    В этом случае подсистема ядра графики Microsoft DirectX имитирует значения прерываний VSync и строк сканирования на основе текущего режима и времени последней имитации VSync.

    Кроме того, значения элементов PixelRate, hSyncFreq и vSyncFreq структуры DISPLAYCONFIG_VIDEO_SIGNAL_INFO должны иметь значение D3DKMDT_FREQUENCY_NOTSPECIFIED.

Если эти условия не выполняются, подсистема ядра графики DirectX не загрузит KMDOD.

Управление реестром

Для Windows Vista с пакетом обновления 1 (SP1) и более поздних версий операционных систем Windows время ожидания простоя VSync по умолчанию составляет 10 периодов виртуальной синхронизации. При необходимости в целях тестирования время ожидания можно контролировать с помощью параметров реестра.

Важно!

Чтобы избежать проблем с совместимостью приложений, не изменяйте параметр реестра по умолчанию в рабочих драйверах.

Путь к ключу:
RTL_REGISTRY_CONTROL\GraphicsDrivers\Scheduler

Полный путь:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Scheduler]

Значение ключа:
VsyncIdleTimeout

Valuetype:
REG_DWORD

Значение:
10 = по умолчанию

Значение:
0 = отключить элемент управления VSync (создает то же поведение, что и Windows Vista)