다음을 통해 공유


VSync 제어를 사용하여 에너지 절약

컴퓨터의 전원을 절약하기 위해 커널 모드 디스플레이 드라이버는 발생하는 VSync 모니터 새로 고침 인터럽트 수를 줄일 수 있습니다.

최신 프로세서 및 플랫폼은 컴퓨터 시스템이 유휴 상태일 때 에너지를 절약하기 위해 운영 체제와 협력하는 경우가 많습니다. 그러나 인터럽트 발생과 같은 주기적인 시스템 활동은 최대 전력 사용량을 유발하며 컴퓨터 시스템이 에너지를 절약하는 일시적인 절전 모드 상태가 되는 것을 방지할 수 있습니다.

WINDOWS Vista sp1(서비스 팩 1) 및 Windows Server 2008부터 운영 체제는 화면이 새 그래픽 또는 마우스 작업에서 새로 고쳐지지 않을 때 주기적인 VSync 인터럽트 계산을 끌 수 있습니다. VSync 인터럽트 간격을 제어하여 드라이버는 상당한 에너지를 절약할 수 있습니다.

Windows Server 2008 이상 버전의 WDK(Windows 드라이버 키트)를 사용하여 WDDM(Windows Display Driver Model) 드라이버를 다시 빌드하여 이 기능을 활용할 수 있습니다.

VSync 컨트롤에 대한 SP1 드라이버 변경 내용이 있는 Windows Vista

드라이버가 이 기능을 활용하려면 SP1을 사용하여 Windows Vista에 도입된 DXGK_VIDSCHCAPS 구조에서 VSyncPowerSaveAware 멤버를 지원해야 합니다. WDDM을 따르는 기존 드라이버는 WDK의 Windows Server 2008 이상 버전을 사용하여 VSyncPowerSaveAware 멤버와 다시 컴파일되어야 합니다.

WDDM을 따르고 이 기능을 지원하는 드라이버가 있는 SP1 이상의 Windows Vista 시스템은 1/Vsync의 10개 연속 기간 동안 GPU 작업이 발생하지 않는 경우 VSync 인터럽트 계산 기능을 해제합니다. 여기서 VSync는 모니터 새로 고침 속도입니다. VSync 속도가 60 헤르츠(Hz)인 경우 VSync 인터럽트는 16밀리초마다 한 번씩 발생합니다. 따라서 화면 업데이트가 없는 경우 VSync 인터럽트는 160밀리초 후에 꺼집니다. GPU 작업이 다시 시작되면 VSync 인터럽트는 화면을 새로 고치기 위해 다시 켜집니다.

Windows 8 이상 버전에 대한 VSync 요구 사항 Display-Only

windows 운영 체제의 Windows 8 이상 버전에서는 다음과 같이 커널 모드 KMDOD(디스플레이 전용 드라이버)에서 VSync 기능을 지원하는 것이 선택 사항입니다.

  • 디스플레이 전용 드라이버가 VSync 컨트롤을 지원합니다.

    KMDOD가 VSync 컨트롤 기능을 지원하는 경우 DxgkDdiControlInterruptDxgkDdiGetScanLine 함수를 모두 구현해야 하며 KMDDOD_INITIALIZATION_DATA 구조에서 이러한 두 함수에 대한 유효한 함수 포인터를 제공해야 합니다.

    이 경우 KMDOD는 VSync 인터럽트를 운영 체제에 보고하기 위해 DxgkDdiInterruptRoutineDxgkDdiDpcRoutine 함수도 구현해야 합니다.

    또한 DISPLAYCONFIG_VIDEO_SIGNAL_INFO 구조체PixelRate, hSyncFreqvSyncFreq 멤버의 값은 D3DKMDT_FREQUENCY_NOTSPECIFIED 수 없습니다.

  • 디스플레이 전용 드라이버는 VSync 컨트롤을 지원하지 않습니다.

    KMDOD가 VSync 컨트롤 기능을 지원하지 않는 경우 DxgkDdiControlInterrupt 또는 DxgkDdiGetScanLine 함수를 구현해서는 안 되며 KMDDOD_INITIALIZATION_DATA 구조에서 이러한 함수 중 하나에 유효한 함수 포인터를 제공하지 않아야 합니다.

    이 경우 Microsoft DirectX 그래픽 커널 하위 시스템은 현재 모드와 마지막 시뮬레이션된 VSync 시간을 기준으로 VSync 인터럽트 및 스캔 라인의 값을 시뮬레이션합니다.

    또한 DISPLAYCONFIG_VIDEO_SIGNAL_INFO 구조체의 PixelRate, hSyncFreqvSyncFreq 멤버의 값은 D3DKMDT_FREQUENCY_NOTSPECIFIED 설정 해야 합니다.

이러한 조건이 충족되지 않으면 DirectX 그래픽 커널 하위 시스템은 KMDOD를 로드하지 않습니다.

레지스트리 제어

SP1 이상 버전의 Windows 운영 체제가 있는 Windows Vista의 경우 기본 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와 동일한 동작 생성)