在驱动程序开发期间测试和调试 TDR

本文为显示驱动程序开发人员提供 TDR (超时检测和恢复) 测试和调试策略。

WHLK 中的 TDR 测试

Windows 硬件实验室工具包 (WHLK) 包含特定于 TDR 的测试,驱动程序开发人员可以使用这些测试进行测试和调试。 例如,开发人员可以使用 SimulatePreemption TDR 手动触发 GPU TDR。 有关各种 TDR 相关测试的详细信息,请参阅 Device.Graphics

用于测试和调试的 TDR 注册表项

开发人员 只能在驱动程序开发过程中使用以下 TDR 相关的注册表项进行测试或调试。

重要

在驱动程序开发过程中,最终用户或目标测试或调试之外的应用程序不应操作这些注册表项。

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) 检测到的超时时检查 Bug;例如,无恢复。
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) 对计算机进行 bug 检查。

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

指定允许由 TdrLimitCount 密钥) 指定的特定数量的 TDR (而不会使计算机崩溃的默认时间。

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.