nDisplay - Stutter problem occurred while using nDisplay

I am using UnrealEngine ndisplay when met some problems, at the same time I rummaged in this article on the Internet (nDisplay – Driving Simulation in Unreal Engine – How we do it, and things learned along the way), the article said, at last the problem and I was like, but no follow-up. At the end of the article you saw that using ndisplay Stutter, which I call intermittent stuttering. I’ve seen this in practice as well, and I’ve also used Unreal Insight or profile analytics to analyze Master nodes and found something similar. I have been trying to solve this problem for a long time, but with no success, so I would like to ask if anyone else has had this problem and if they have solved it.
Below I will also describe some cases where I tested this problem, the following conclusions are in UE5.1 a default ndisplay template scenario experiment, no additional code, excluding their own factors, And the program only runs the Master or does not use SwitchBoard to start can get a stable 60fps (with vsync) 180+fps (without vsync), there is no edid problem has been correctly configured successfully (I exported and specified their edid for each screen, The actual use of fps does not drop half should be correct configuration), in the case of using nvidia Quadro card and Sync card, the graphics card and Sync card driver version and firmware version are up to the requirements, ensuring that every window is focused on the ue program, has been disabled full screen optimization.

  1. Intermittent Stutter occurs when None, Ethernet, and Nvidia are tried.
  2. The Stutter phenomenon occurs when T.maaxFPS is used to limit different frame rates, for example, 60fps will drop to about 40 or 30, 30dps will drop to 15 or 10, 5fps will drop to 2.5 or 4.5, and the phenomenon always drops fps according to the ratio of the current highest fps. I don’t think it’s performance, it’s more of a mechanical issue, kind of like ndisplay triggers every cycle.
  3. At present, the most nodes I have tested are 4, and master does not participate in synchronization. In fact, there are 3 child nodes forming a synchronization network. Stutter does not appear when running only master, nor does Stutter appear when running master and a child node (I guess synchronization does not actually run). Because the master does not participate in synchronization), but the Stutter will occur between the master and two child nodes, and the Stutter phenomenon will get worse as the number of child nodes increases. I also tried to switch the master to another node, i.e. the master and a child node and they both participated in synchronization and the Stutter phenomenon occurred. So I guess the Stutter phenomenon only happens when synchronization is needed. I also tried running two instances of ndisplay on one machine without Stutter because there was no synchronization between machines.
  4. The Stutter phenomenon disappears occasionally with a few boot-ups, but most experiments appear.

Hardware (per node) :
System: Windows 10
Graphics card: Quadro RTX A6000
CPU: i9 13900k
Quadro sync II
There is no additional synchronization signal generator (I don’t know much about this thing, specifically the official kind of extra equipment connected to the synchronization card through the BNC cable, they are called three-level or two-level synchronization generator)

Finally, if I can get your help will be very grateful!


1 Like

hey! i’ve been testing with nDisplay as well in UE 5.4 and i’m encountering very similar results to you, did u ever find a workaround or a solution for this? I’m using sync policy “None” & “Ethernet” as well

It can be due to

PSO Compiling (try force precaching)

or the issues with the sync policy.

Try using -DPCVars=“nDisplay.sync.nvidia.UsePresentBarrierPolicy=1” in the command line

This cvar allows to replace the original NVIDIA sync policy with the new Present Barrier (DX12 only).
While in testing, it’s controled by this cvar. Later on, Present Barrier policy will be exposed to
the GUI configurator as well as other policies are.

It’s a bit hard to say without knowing your exact system, but I’d bet on PSO compilation as well. See if your stutters happen each time some object is visible on some new viewport for the first time, leading that node to compile the PSO. Due to the sync, this will stutter all other nodes.

PSO Precaching did not really do much for us, but what helped was a manual PSO Gathering/Bundling step. It’s a bit of effort, but should give you a clue on what the problem is: Manually Creating Bundled PSO Caches in Unreal Engine | Unreal Engine 5.6 Documentation | Epic Developer Community