关于GPUDebugCrash手动触发PageFault时疑似Bug行为的疑问

Hi

我们遇到了GPUCrash的问题,在使用官方引擎+空项目测试控制台指令GPUDebugCrash的时候

发生了一些预想之外的事情,所以想要咨询一下

第一个事情是,当我控制台输入 GPUDebugCrash pagefault 后,工程并没有立即触发page fault的崩溃、甚至能正常运行

但如果再输入 r.Lumen.DiffuseIndirect.Allow 0(可能其他的cvar也可以,但没测试),此时才会触发page fault。

而且aftermath显示的堆栈也并不是由GPUDebugCrash的ComputeShader触发的,而是发生在没有规律的其他Pass(甚至可能会是PixelShader)

  • 为什么输入GPUDebugCrash pagefault后,没有立即崩溃?

第二个事情是,如果提前输入 r.RDG.ImmediateMode 1 后,此时再按序输入 GPUDebugCrash pagefault + r.Lumen.DiffuseIndirect.Allow 0 后

也并不会按照预想中的触发page fault了

  • 预想中ImmediateMode不会让pagefault消失,是RDG有bug吗?

两次log已经附件了。

谢谢!

复现步骤:

  1. ​从Launcher启动编辑器,创建第三人称空项目,package 项目(Development)
  2. 使用启动参数运行游戏(-gpucrashdebugging -dred -nvaftermathcallstack -nvAftermathDumpShaderDebugInfo -ini:Engine:[ConsoleVariables]:r.ShowMaterialDrawEvents=1)
  3. 控制台输入 ​ GPUDebugCrash pagefault ,此时没有立即触发pagefault崩溃
  4. 控制台输入 ​r.Lumen.DiffuseIndirect.Allow 0,此时触发gpu crash

复现步骤:

  1. 重复上面的1~2步骤,运行游戏
  2. 控制台输入 ​r.RDG.ImmediateMode 1
  3. 控制台输入 ​ GPUDebugCrash pagefault ,此时没有立即触发pagefault崩溃
  4. 控制台输入 ​r.Lumen.DiffuseIndirect.Allow 0,此时仍然没有触发gpu crash
  5. ​输入 r.RDG.ImmediateMode 0,重复3~4步骤,触发 gpu crash

CPU: i7-13700k

GPU: RTX 4070 SUPER

Hi,

我咨询了一下总部的同时,gpudebugcrash pagefault不是一定会造成gpu崩溃的,它只是向驱动提出一个hint来释放一个resource/heap,但是不同的gpu vendor或者系统,可能会有不同的结果。我自己测试也是同样的情况,pagefault并不会崩溃,即便设置 r.Lumen.DiffuseIndirect.Allow 0也没有。但是设置gpudebugcrash assert会崩溃,且在正确的地方。