드라이버 개발 중 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.