One of my colleagues had a suggestion that could be helpful. We introduced a change that would dump active breadcrumbs when the GPU payload was taking too long - this is from 5.7 after the breadcrumbs refactor, but you may be able to take the idea behind it and implement it for the 5.5 breadcrumbs:
CL#44248799 (f4ce60) D3D12RHI: dump the active breadcrumbs tree when a GPU payload takes too long
- This will help investigate crash reports where the full GPU crash handling was not triggered, but the interrupt thread detected the timeout of a payload.
- Currently only the timeout message is printed to the log. Now we’ll also get the active breadcrumbs from each queue.
UE 5.7 CL#45349090 (679703)
Another suggestion was to see whether the crash goes away when D3D12 residency management is disabled:
-dpcvars=D3D12.ResidencyManagement=0
We also recently fixed an issue where RHI tasks could run out of order, but this may not affect your engine version:
CL#49856210 (d7982c) Fix RHI task pipe chaining
- RHI task pipes must enforce FIFO ordering of tasks that are enqueued, however this wasn’t always happening. Tasks on the RHIThread pipe could run out-of-order.
- The SubmitToGPU task closes the RHIThread pipe so it can hold a reference the LastSubmit event. The next enqueued task on the RHIThread pipe would create a new TaskGraph task (because FTaskPipe::Current is null), but the previous chain’s completion event was not inserted as a prerequisite.
- This could lead to chains on the RHI thread running in reverse order. This may have been causing deleted RHI resource crashes or other RHI / GPU crashes.
UE 5.8 CL#52603973 (3a484e)
And another thought that occurred to me is maybe you’re playing some video during these first few frames or have some custom splash? If so, try disabling any video playback to see if the crash goes away.
[Attachment Removed]