Hardware Frame Lock
What is Hardware Frame Lock?edit
Hardware Frame Lock is used to synchronize the GPU with the displays or projectors attached to them. This makes it possible to maintain frame-accurate sync across displays or projectors and across multiple graphics cards. Such sync is often required when content spans multiple outputs or when using multiple GPUs and/or multiple computers with multiple GPUs. It can also be used when displays or projectors need to be synced to an external timing source.
There are two parts that make up Hardware Frame Lock.
Genlock ensures the refresh intervals of all the displays are occuring at the same time (in phase with each other). The sync signal can be generated internally by one of the Quadros in the sync group, or by an external House-Sync signal plugged into the Quadro Sync cards. Without Genlock the displays may be refreshing at different intervals, resulting in visual tearing due to some displays starting to update their content before other displays. Genlock is obtained by setting up the Quadro Sync in the Nvidia Control Panel. It will function regardless of how the TouchDesigner project is setup (as long as V-Sync is on), and doesn't require a Pro license.
Note: This feature is not currently available in the 2022.20000+ series of builds due to it not yet supporting Vulkan. It will be updated when Nvidia adds Vulkan support.
Frame Lock is enabled in the Window COMP via the 'Hardware Frame-Lock' parameter. This feature also uses the Quadro Sync cards, and ensures all of the displays only update when they are all ready to update. This avoids cases where one process has a hiccup and isn't ready to output a new frame, but other processes go ahead and update anyways, resulting in the final canvas showing two different frames at the same time. All processes will stall and wait for the lagging process when a hiccup occurs. This mode also reduces overall render performance due to the overhead it requires, so it should only be used when absolutely necessary. Lots of content can be shown across multiple displays without Frame Lock, and look great.
Improving Frame Lock Performanceedit
By default frame lock will stall the processes to wait for the vsync interval. This can cause large performance degredations. To help with this there is a new Nvidia feature called 'Pre-Present Wait', which can be enabled. To enable pre-present wait, download the configureDriver.exe utility: https://www.nvidia.com/en-us/drivers/driver-utility/
Then run as administrator and choose option #10 – “Enable OpenGL Swapgroup PrePresentWait”
Nvidia Quadro Syncedit
The Nvidia Quadro Sync hardware solution requires the use of specific Quadro cards with the appropriate Quadro Sync card for synchronization. Each computer system that will be synced requires its own sync card which is attached to the graphics card via a ribbon cable.
- NVIDIA Quadro Sync Card
- NVIDIA Quadro K-series or newer cards.
Multiple GPUs on a Single Systemedit
This is the most simple setup which will synchronize the output of multiple GPUs and displays on a single computer.
There are some restrictions to consider when setting a system up for sync
- All displays connected must run on the same EDID. The simplest way to do this is ensure they are the same type, manufacturer, and model.
- All synced graphics cards must be the same (for example you can not mix and match a Quadro K5000 with a K6000)
- Whenever using multiple GPUs with TouchDesigner, use GPU Affinity for optimum performance. This requires a separate .toe file for each GPU.
1) Make sure all connections and power are properly setup between the graphics cards and sync card.
2) Make sure Vertical Sync setting in the Nvidia Control Panel is set to "On" or "Use the 3D application setting".
3) To enable Frame Lock, open the Synchronize Displays section of the Nvidia Control Panel.
- Set the option for The timing server is... to On this System.
- Check the checkboxes for all required displays in the Select displays to lock to the server: section.
4) In your TouchDesigner
.toe file, confirm the following:
- Make sure GPU Affinity is properly setup for each .toe file that runs on each GPU, if you are using multiple GPUs on a single PC.
- Turn on the Hardware Frame-Lock parameter in the Window COMP you are using for Perform Mode.
- Confirm that the Monitor parameter in the Window COMP is set correctly for each .toe file that is running. It must use the correct monitor based on the GPU Affinity setting for each .toe file.
- Double-check that Open on Start is turned off in the Window COMP.
- Open the Window Placement Dialog and turn on Start in Perform Mode option.
- Restart the
AMD/ATI FirePro S400edit
The ATI FirePro S400 Synchronization module provides framelock and genlock functionality to FirePro workstation graphics cards.
At this time we do not have any field testing with the ATI FirePro hardware solution. Please refer to AMD/ATI support for details of this system.