What's going on with OpenGL in nDisplay?

I see that since 4.23 OpenGl has been deprecated. Is it being deprecated in favor of Vulkan or something? nDisplay requires it for NV swap lock, so what’s going to happen there?

Nvidia synchronization should still work with DirectX 11 and software swap synchronization (swap_sync_policy=“1”)

Wouldn’t this sort of miss the point of having hardware swap lock?

On a more critical topic for the particular system I’m dealing with (28-node/56-screen “cave” using NVidia Quadro GPUs), what about Frame Sequential stereo 3D, i.e. OpenGL hardware Quad-Buffering? We don’t have the ability to use left-right/top-bottom with our system, so those options are out. How are we to get frame sequential or similar working under DX11/12?

I’d be curious to hear from one of the nDisplay devs about the removal of OpenGL from UE4 as it kinda means both hardware frame sync and frame-sequential stereoscopic (quad buffers) are no longer available to UE4 users. If this can work in some other way (while still being hardware synced, and still having quad-buffer-like stereoscopic that doesn’t render as left-right/top-bottom) then I’d love to know, as that’s exactly how our vis cluster works.

Or will nDisplay no longer support hardware frame syncing and quad-buffering?

Hi Conan, the last I’ve heard on UDN is that Vulkan support is planned for 4.25 nDisplay. I don’t know what that will bring to the table exactly. I am in a similar situation, in charge of a vis cluster at an institution. Would you be interested in exchanging emails or other contact to discuss first-hand experiences?

I haven’t found much info on Vulkan having support for hardware quad-buffering, or hardware frame syncing, unless you use OpenGL-Vulkan interop. And since GL is removed it doesn’t seem like that will be possible at all. Hopefully I am wrong and Vulkan does have support (I haven’t looked into the multi-view stuff yet, which might be the answer to quad-buffering at least).
Seems like nDisplay can only do stereo with systems that support left-right/top-bottom now, which would mean our lab would need to run another 2000 meters of display cables from the cluster to the displays, which isn’t really an option. Hopefully the UE4/nDisplay devs have some sort of plan to get quad-buffers/hardware sync going again.

nDisplay dev here!

**Windows 8.1+ support DirectX FrameSequential (Quad Buffer) Stereoscopic rendering and nDisplay working perfectly. **
You have to enable it in your desktop settings, there is a checkbox down to resolution settings.
There are also few settings in Nvidia control panel that need to be on.

At this moment we implemented a custom sync algorithm based on DWM vBlank timings, native nVidia swap sync being in active development.

Scheduled for 26!

I might have an answer on the hardware frame syncing. Before nDisplay we had our own plugin (i was actually the person who committed the -quad-buffer command line option to ue4 :slight_smile: ). When we heard that opengl will become deprecated (version 4.21 was already displaying some artifacts in stereo) I looked if vulkan is feasible. I could not find any mention of hardware frame syncing in any documentation so we contacted nvidia. The answer we got back is that they are working on it. This was 3 months ago. Our system runs on linux so we can’t use directx and have been stuck with using an old version of ue4.

A little thread necromancy…

Any extra info on the required settings? I’v been trying to test 4.25 now that I’m back in the lab (what a year eh?) and from what I can tell the sync now works under DX, but I can’t get Frame Sequential steroscopic to function for UE4 at all.

For extra info, our cluster uses 28 nodes with Nvidia Quadro M6000’s, each driving 2 HD displays in mosaic (1920x2160) using quad-buffering for stereoscopic. We can run Win7 and 10, DX11/12 etc
Nvidia stereoscopic is enabled, the nvidia test app works etc, but also we’ve run our own OpenGL applications that use quad-buffering and have used Unity3D with quad-buffering. Previously nDisplay worked when OpenGL was still a part of it.

We don’t have the ability to run top-bottom/side-by-side with our cluster as that would require running a few hundred meters of extra cables and redoing our cluster, and with covid finances that’s not an option :frowning:

Is there some extra setting in UE that I’ve missed? The nDisplay documentation for Stereoscopic still mentions OpenGL etc and doesn’t say there are any additional requirements for Frame Sequential (i.e. nothing about fullscreen/windowed, any other required windows settings).

Here’s a cutdown test config I just tried using with the provided example nDisplay scene using just 2 nodes (fyi cyl14 is our nvidia sync master):


[info] version="23"

[cluster_node] id="cyl13" addr="192.168.1.113" window="wnd_cyl13"
[cluster_node] id="cyl14" addr="192.168.1.114" window="wnd_cyl14" port_cs="7777" port_ss="7778" master="true"

[window] id="wnd_cyl13" viewports="vp_cyl13" fullscreen="true" resx="1920" resy="2160"
[window] id="wnd_cyl14" viewports="vp_cyl14" fullscreen="true" resx="1920" resy="2160"

[viewport] id="vp_cyl13" x="0" y="0" width="1920" height="2160" projection="proj_cyl13" camera="camera_static"
[viewport] id="vp_cyl14" x="0" y="0" width="1920" height="2160" projection="proj_cyl14" camera="camera_static"

[projection] id="proj_cyl13" type="simple" screen="scr_cyl13"
[projection] id="proj_cyl14" type="simple" screen="scr_cyl14"

[screen] id="scr_cyl13" loc="X=2.8985,Y=-1.266,Z=2.3435" rot="P=0,Y=-24.0814,R=0" size="X=1.320968,Y=1.497" parent="cyl_origin"
[screen] id="scr_cyl14" loc="X=2.8985,Y=-1.266,Z=0.844" rot="P=0,Y=-24.0814,R=0" size="X=1.320968,Y=1.498" parent="cyl_origin"

[scene_node] id="cyl_origin" loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0"
[scene_node] id="socket_cam" loc="X=0,Y=0,Z=1.6" rot="P=0,Y=0,R=0" parent="cyl_origin"

[camera] id="camera_static" loc="X=0,Y=0,Z=0" parent="socket_cam" eye_swap="false" eye_dist="0.064" force_offset="0"

[general] swap_sync_policy="2"

[network] cln_conn_tries_amount="10" cln_conn_retry_delay="1000" game_start_timeout="30000" barrier_wait_timeout="5000"

Any help figuring out this issue would be greatly appreciated. Quad-buffering is always causing us hassles as left-right or top-bottom would be so much simpler, but unfortunately this is the system we’re dealing with.

Oh and also…

I saw your work a few years ago Pjotr, great stuff and cheers for the quad buffering support in UE4. Now to just see if I can get it going again :wink:

OpenGL was dropped by the engine.
We have numerous CAVE systems working well with the recent UE4. I bet its something with your windows settings.
Make sure you have “3D Display” set under your display settings and other settings in the Nvidia control panel, Stereo 3D panel should say something like “Quadro Professional Stereo” etc.

I hope that helps!
vitalii

Beginning with the Windows 10 May 2020 Update (20H1), the method for selecting which graphics processor to use for applications has changed.
Nvidia: Change in process of assigning GPUs to use for applications, URL: "Run with graphics processor" missing from context menu: Change in process of assigning GPUs to use for applications | NVIDIA

Preview just released, Vulkan seems to be still not natively supported :frowning:
Is there any new info on getting nDisplay back up on linux clusters nowadays?

We have some progress in that direction but it is not ready for 26 release yet. But that’s something we have in the roadmap!

Hello and thanks for the answer, much appreciated!
We actually managed to do a basic implementation ourselves based on the current master, and it seems to work pretty well (at least under Windows). We still have an issue under Linux where the first display to pop up occasionally appears darker than the others. We’ll try and put a pull request up later this week.

@hell0w0rld123 Just as a heads-up, we put up a pull request https://github.com/EpicGames/UnrealEngine/pull/7486 for basic Linux compatibility and vulkan software sync. It seems to work okay in our tests so far.