godotengine / godotengine/godot
Bistro demo on D3D12 triggers TDR quite easily (Intel UHD 620)
- Dominant language
- C++
- Stars
- 117k
- Forks
- 26.8k
- PR merge metrics
- PR metrics pending
Description
### Tested versions
- Reproducible on v4.3.stable.official [77dcf97d8]
### System information
Godot v4.3.stable - Windows 10.0.19045 - dedicated Intel(R) UHD Graphics 620 (Intel Corporation; 31.0.101.2128) - Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz (8 Threads)
### Issue description
When opening or running https://github.com/Jamsers/Bistro-Demo-Tweaked (commit 6b0ee6c) using D3D12, Godot very often triggers a TDR:
- Functions start returning `0x887a0005` (which is `DXGI_ERROR_DEVICE_REMOVED`)
- When GPU validation is enabled, it produces:
```
D3D12 ERROR: ID3D12Device::RemoveDevice: Device removal has been triggered for the following reason (DXGI_ERROR_DEVICE_HUNG: The Device took an unreasonable amount of time to execute its commands, or the hardware crashed/hung. As a result, the TDR (Timeout Detection and Recovery) mechanism has been triggered. The current Device Context was executing commands when the hang occurred. The application may want to respawn and fallback to less aggressive use of the display hardware). [ EXECUTION ERROR #232: DEVICE_REMOVAL_PROCESS_AT_FAULT]
```
This can happen very easily even when setting to windowed mode at 1280x720.
In comparison, the same project seems to run fine on the same system without TDR when using Vulkan, at fullscreen 2560x1440 resolution (albeit at a mediocre 2 fps).
### Steps to reproduce
- Use Intel integrated graphics?
- Open the project in the editor once to reimport resources
- Run the project with `--rendering-driver d3d12`
- Observe errors being printed to the console
### Minimal reproduction project (MRP)
n/a
Contributor guide
Research direction
Start with the Bistro-Demo-Tweaked project at commit 6b0ee6c, reimport it in Godot v4.3.stable, and run it with --rendering-driver d3d12 on the stated Intel UHD 620 setup. Compare the console output and behavior with Vulkan; done requires determining the cause of the D3D12 device removal or documenting a reproducible fix.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, godot
- Domain
- computer-graphics, game-dev
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 18/100