I keep running into hitches in my project packaged in Unreal Engine 5.8.3 while in true fullscreen mode (even in a clean Third Person Template project).
Your CPU profile already shows the hitch is not a game-thread spike. IDXGIOutput::WaitForVBlank_NoBusyWait is about 96 ms of the 148 ms CPU frame, and D3D12_Present is almost the same. That is the swap chain waiting on a vblank while the GPU is idle, which is what you get when the game is fullscreen on a display that is not the one the engine is presenting to, or when the frame rate and the monitor are fighting.
You are on Windows 10 with three monitors at 75 Hz and you only tested on one of them. Try r.D3D12.AllowFullscreenMode=1 and r.D3D12.AllowTearing=1 together, and also r.D3D12.UseAllowTearing=1 which you already tried alone. Without both fullscreen mode and tearing, Present still waits for vblank even if the game is rendering faster than 75 fps. In the NVIDIA control panel, set the game to the specific monitor (not “auto-select”), and set VSync to off for that monitor, not Fast. Fast vsync still inserts a wait when the engine presents on the wrong output.
Also set r.VSync=0 and rhi.SyncSlackMS=0, and make sure the packaged game is not using the editor’s windowed mode. In Project Settings, Engine > General Settings, set Default Window Mode to Fullscreen and Default Window Width/Height to the resolution you actually want, so it does not fullscreen onto a different display. If the hitch disappears when you run the packaged build with only one monitor enabled, it is the multi-monitor present path, not Lumen or Nanite. The GPU numbers in that same capture are under 0.5 ms on the GPU and 1.5 ms on the CPU, so those console variables that zero out streaming and occlusion are not the cause of these spikes.
Vsync is already disabled in both Unreal Engine and the Nvidia Control Panel.
I tested the commands you suggested, but the result is the same.
Also, these settings do not exist here: Project Settings, Engine > General Settings, set Default Window Mode to Fullscreen and Default Window Width/Height.
I tested with a single monitor (I disconnected the other two), but the result was the same.
I don’t understand why IDXGIOutput::WaitForVBlank_NoBusyWait is causing those stutters, especially since there is no clear indication of the underlying cause. I’ve tested all the fixes related to synchronization between Unreal Engine and Windows, but nothing works.
Does anyone have any other ideas on how I could identify or fix these stutters?