다음을 통해 공유


드라이버 개발 중 TDR 테스트 및 디버깅

이 문서에서는 그래픽 디스플레이 드라이버 개발자를 위한 TDR(시간 제한 검색 및 복구) 테스트 및 디버깅 전략에 대해 설명합니다.

WHLK의 TDR 테스트

WHLK(Windows 하드웨어 랩 키트)에는 드라이버 개발자가 테스트 및 디버깅 목적으로 사용할 수 있는 TDR 관련 테스트가 포함되어 있습니다. 예를 들어 개발자는 SimulatePreemption TDR을 사용하여 GPU TDR을 수동으로 트리거할 수 있습니다. 다양한 TDR 관련 테스트에 대한 자세한 내용은 Device.Graphics를 참조하세요.

테스트 및 디버깅을 위한 TDR 레지스트리 키

개발자는 드라이버 개발 프로세스 중에만 테스트 또는 디버깅 목적으로 다음 TDR 관련 레지스트리 키를 사용할 수 있습니다.

Important

최종 사용자는 이러한 레지스트리 키를 조작하지 않는 것이 좋습니다. 또한 드라이버 개발 중에 대상 테스트 또는 디버깅 외부의 애플리케이션에서 조작해서는 안 됩니다.

TdrLevel

초기 복구 수준을 지정합니다.

KeyPath   : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue  : TdrLevel
ValueType : REG_DWORD
ValueData : TdrLevelXxx (see the following table)

여기서 TdrLevelXxx 는 다음 값 중 하나일 수 있습니다.

의미
TdrLevelOff (0) 검색 사용 안 함
TdrLevelBugcheck (1) 검색된 시간 제한에 대한 버그 검사; 예를 들어 복구가 없습니다.
TdrLevelRecoverVGA (2) VGA로 복구(구현되지 않음).
TdrLevelRecover (3) 시간 제한(기본값)에 복구합니다.

TdrDelay

GPU가 GPU 스케줄러의 선점 요청을 지연할 수 있는 시간(초)을 지정합니다. TdrDelay는 사실상 시간 제한 임계값입니다.

KeyPath   : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue  : TdrDelay
ValueType : REG_DWORD
ValueData : Number of seconds to delay. The default value is 2 seconds.

TdrDdiDelay

OS에서 스레드가 드라이버를 떠날 수 있도록 허용하는 시간(초)을 지정합니다. 지정된 시간 후에 OS는 코드 VIDEO_TDR_FAILURE(0x116)를 사용하여 컴퓨터를 버그 검사합니다.

KeyPath   : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue  : TdrDdiDelay
ValueType : REG_DWORD
ValueData : Number of seconds to leave the driver. The default value is 5 seconds.

TdrDebugMode

TDR 프로세스의 디버깅 관련 동작을 지정합니다. 기본값은 디버거에 침입하지 않음을 나타내는 TDR_DEBUG_MODE_RECOVER_NO_PROMPT.

KeyPath   : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue  : TdrDebugMode
ValueType : REG_DWORD
ValueData : TDR_DEBUG_MODE_XXX (see the following table)
의미
TDR_DEBUG_MODE_OFF (0) 복구 전에 커널 디버거로 중단하여 시간 제한 조사를 허용합니다.
TDR_DEBUG_MODE_IGNORE_TIMEOUT (1) 시간 제한은 무시합니다.
TDR_DEBUG_MODE_RECOVER_NO_PROMPT (2) 디버거(기본값)에 침입하지 않고 복구합니다.
TDR_DEBUG_MODE_RECOVER_UNCONDITIONAL (3) 일부 복구 조건이 충족되지 않더라도 복구합니다(예: 연속 시간 제한 시 복구).

TdrLimitTime

컴퓨터를 충돌하지 않고 특정 수의 TDR(TdrLimitCount 키로 지정됨)이 허용되는 기본 시간을 지정합니다.

KeyPath   : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue  : TdrLimitTime
ValueType : REG_DWORD
ValueData : Number of seconds before crashing. The default value is 60 seconds.

TdrLimitCount

컴퓨터를 충돌하지 않고 TdrLimitTime 키로 지정된 시간 동안 허용되는 TDR(0x117)의 기본 수를 지정합니다.

KeyPath   : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue  : TdrLimitCount
ValueType : REG_DWORD
ValueData : Number of TDRs before crashing. The default value is 5.

TdrTestMode

예약되었습니다. 사용하지 마세요.

KeyPath   : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue  : TdrTestMode
ValueType : REG_DWORD
ValueData : Do not use.

TdrDodPresentDelay

커널 모드 표시 전용 드라이버(KMDOD) DxgkDdiPresentDisplayOnly 함수가 진행률을 pfnPresentDisplayOnlyProgress(DXGKARG_PRESENT_DISPLAYONLY 구조에 전달됨)에 보고하여 비동기 프레젠테이션을 완료하는 데 허용되는 시간(초)을 지정합니다.

KeyPath   : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue  : TdrDodPresentDelay
ValueType : REG_DWORD
ValueData : Number of seconds allowed for **DxgkDdiPresentDisplayOnly** to complete an asynchronous present. The default value is 2 seconds. (Min: 1, Max: 15 * 60 = 15 minutes). This value is for debugging purposes only.

TdrDodVSyncDelay

V 동기화 Watchdog가 KMDOD에서 TDR을 트리거하기 전에 V 동기화 신호가 보고될 때까지 대기하는 시간(초)을 지정합니다.

KeyPath   : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
KeyValue  : TdrDodVSyncDelay
ValueType : REG_DWORD
ValueData : Number of seconds that the V-sync watchdog waits for a V-sync to be reported before a TDR occurs with Kernel Mode Display-Only Drivers. Drivers are expected to report V-sync interrupts at the cadence of the display mode refresh rate. The default value is 2 seconds. (Min: 1s, Max: 15 * 60 = 15 minutes). This value is for debugging purposes only.