gpu崩溃情况
在虚幻4/5的一些项目运行过程中,因为存在处理大量图形的情况,可能会导致gpu崩溃,就像下面这张图。
随后基本上就会出现这种虚幻引擎崩溃窗口
发生gpu崩溃的原因
windows系统为防止应用程序因使用过多内存而锁死,实施了保护措施。如果一个应用程序的渲染时间超过几秒,windows系统就会杀死gpu驱动程序,导致应用程序崩溃。在虚幻引擎中,无法知道渲染进程的耗时,因此无法在应用程序层面避免崩溃。
解决方法
在我们开发比较大项目时候,可能经常遇到这种崩溃。编辑windows注册表项,可以让系统有更多时间运行渲染进程。方法是创建两个新的注册表项:tdrdelay
和 tdrddidelay
。
tdrdelay
:用于设置超时阈值。即负责处理和存储(vram)的gpu调度程序发出抢占请求时,gpu将此请求延迟的秒数。
tdrddidelay
:用于设置操作系统(os)允许线程离开驱动程序的时长。该时长耗尽之后,将发生超时延迟故障。
接下来是方法步骤:
1.第一步,在windows搜索下,搜索“run”。随后打开运行(run)程序(或windows键+r键)
2.在打开的小框中,输入"regedit" 。点击 确定(ok) 打开注册表编辑器。
3.在注册表编辑器左侧导航栏列表中,找到 graphicsdrivers 。位置是computer\hkey_local_machine\system\currentcontrolset\control\graphicsdrivers 或 (计算机\hkey_local_machine\system\currentcontrolset\control\graphicsdrivers)
注意添加到graphicdrivers文件夹中,不要添加错地方了
4.注册第一个注册表,名称是 tdrdelay
。如果该注册表项已存在,请双击进行编辑。如果尚未存在,请右键点击右侧的窗格,并选择 新建(new) > dword (32 位)值(dword (32-bit) value)
5.将 基数(base) 设置为 十进制(decimal) 。将tdrdelay的 值(value) 设置为 60 。点击 确定(ok) 完成。
6.接下来注册第二个注册表,名称为tdrddidelay。如果。如果该注册表已存在,请双击进行编辑。如果尚未存在,请右键点击右侧的窗格,并选择 新建(new) > dword (32 位)值(dword (32-bit) value) 进行创建。
7.将 基数(base) 设置为 十进制(decimal) 。将 tdrddidelay
的 值(value) 设置为 60 。点击 确定(ok) 完成。
8.注册表应该已经有 tdrdelay
和 tdrddidelay
9.关闭注册表编辑器
10.最后,重启计算机,以使改动生效。
写在最后
你已经添加这些注册表之后,windows系统现在将等待60秒,来确定应用程序的渲染进程是否耗时太久。如果还是遇到类似的gpu崩溃,尝试将注册表项 tdrdelay
和 tdrddidelay
中的 值(value) 从 60 更改为 120 。
虽然这种方法能够很好地遏制基于渲染的gpu崩溃,但并不能解决所有崩溃。如果你尝试同时处理太多数据,无论你将超时延迟设置得多长,gpu都可能会超时。该解决方案只是给你的显卡稍微多提供了一点时间。千万不要乱改注册表别的地方!!!
发表评论