Appendix X. Framelock and Genlock

Visual computing applications that involve multiple displays, or even multiple windows within a display, can require special signal processing and application controls in order to function properly. For example, in order to produce quality video recording of animated graphics, the graphics display must be synchronized with the video camera. As another example, applications presented on multiple displays must be synchronized in order to complete the illusion of a larger, virtual canvas.

This synchronization is enabled through the framelock and genlock capabilities of the NVIDIA driver. This section describes the setup and use of framelock and genlock.

Definition of Terms

GENLOCK: Genlock refers to the process of synchronizing the pixel scanning of one or more displays to an external synchronization source. NVIDIA genlock requires the external signal to be either TTL or composite, such as used for NTSC, PAL, or HDTV. It should be noted that the NVIDIA genlock implementation is guaranteed only to be frame-synchronized, and not necessarily pixel-synchronized.

FRAMELOCK: Frame lock involves the use of hardware to synchronize the frames on each display in a connected system. When graphics and video are displayed across multiple monitors, framelocked systems help maintain image continuity to create a virtual canvas. Frame lock is especially critical for stereo viewing, where the left and right fields must be in sync across all displays.

Swap sync refers to the synchronization of buffer swaps of multiple application windows. By means of swap sync, applications running on multiple systems can synchronize the application buffer swaps between all the systems. In order to work across multiple systems, swap sync requires that the systems are framelocked.

In short, to enable genlock means to sync to an external signal. To enable framelock means to sync 2 or more X Screens to a signal generated internally by the hardware, and to use both means to sync 2 or more X Screens to an external signal.

Supported Hardware

Framelock and genlock are supported for the following hardware:

Board  
Quadro FX 3000G  
Quadro FX G-Sync, used in conjunction with a Quadro FX 4400 or Quadro FX 4500  

Hardware Setup

Before you begin, you should check that your hardware has been properly installed. If you are using the Quadro FX 3000G, the genlock/framelock signal processing hardware is located on the dual-slot card itself, and after installing the card, no additional setup is necessary.

If you are using the Quadro FX G-Sync board in conjunction with a graphics card, the following additional setup steps are required. These steps must be performed when the system is off.

  1. On the Quadro FX G-Sync board, locate the fourteen-pin connector labeled "primary". If the associated ribbon cable is not already joined to this connector, do so now.

  2. Install the Quadro FX G-Sync board in any available slot. Note that the slot itself is only used for support, so even a known "bad" slot is acceptable. The slot must be close enough to the graphics card that the ribbon cable can reach.

  3. Connect the other end of the ribbon cable to the fourteen-pin connector on the graphics card.

You may now boot the system and begin to setup genlock and/or framelock. These instructions assume that you have already successfully installed the NVIDIA Accelerated Linux Driver Set. If you have not done so, please see Chapter 2, Installing the NVIDIA Driver.

Configuration with nvidia-settings

Framelock and genlock are configured through the nvidia-settings utility. Please see the nvidia-settings(1) man page, and the nvidia-settings online help (click the "Help" button in the lower right corner of the interface for per-page help information).

From the nvidia-settings framelock panel, you may control the addition of X screens to the framelock/genlock network, monitor the status of that network, and enable/disable framelock and genlock.

After the system has booted and X Windows has been started, run nvidia-settings as

    % nvidia-settings

You may wish to start this utility before continuing, as we refer to it frequently in the subsequent discussion.

The setup of genlock and framelock are described separately. We then describe the use of genlock and framelock together.

Genlock Setup

After the system has been booted, connect the external signal to the house sync connector (the BNC connector) on either the graphics card or the G-Sync card. There is a status LED next to the connector. A solid red LED indicates that the hardware cannot detect the timing signal, and you should check the signal source before proceeding. A green LED indicates that the hardware is detecting a timing signal. An occasional red flash is okay.

In the framelock panel of the nvidia-settings interface, add the X screen that you would like to sync to this external source by clicking the "Add X Screen" button. An X Screen is typically specified in the format system:m.n, e.g.:

    mycomputer.domain.com:0.0

or

    localhost:0.0

Note that in genlock-only mode, the X screen to synchronize must be backed by the system attached to the external sync source. After adding an X screen, a row will appear in the table on the framelock panel that displays relevant status information about the X screen. In particular, the "House" column of this table contains an LED image whose state mirrors the state of the physical LED next to the house sync connector. Thus, you may monitor the status of this signal from the software interface.

If you are using a G-Sync card, you must also click the "Use House Sync" checkbox. To enable synchronization of this X screen to the external source, click the "Enable Framelock" button. The screen may take a moment to stabilize. If it does not stabilize, you may have selected a synchronization signal that the system cannot support. You should disable synchronization by clicking the "Disable Framelock" button and check the external sync signal.

Modifications to genlock settings (e.g., "Use House Sync", "Add X Screen") must be done while synchronization is disabled.

Framelock Setup

Framelock is supported across an arbitrary number of Quadro FX 3000 or Quadro FX G-Sync systems, although mixing the two in the same framelock network is not supported. Additionally, each system to be included in the framelock network must be configured with identical mode timings. Please see Appendix J, Programming Modes for information on mode timings.

Connect the systems through their RJ45 ports using standard CAT5 patch cables. These ports are located on the framelock board itself (either the Quadro FX 3000 or the Quadro FX G-Sync board). Do not connect a framelock port to an ethernet card or hub. Doing so may permanently damage the hardware The connections should be made in a daisy-chain fashion: each card has two RJ45 ports, call them 1 and 2. Connect port 1 of system A to port 2 of system B, connect port 1 of system B to port 2 of system C, etc. Note that you will always have two empty ports in your framelock network.

The ports self-configure as inputs or outputs once framelock is enabled. Each port has a yellow and a green LED that reflect this state. A flashing yellow LED indicates an output and a flashing green LED indicates an input. A solid green LED indicates that the port has not yet configured.

In the framelock panel of the nvidia-settings interface, add the X screens that you would like to include in the framelock network by clicking the "Add X Screen" button (see the description for adding X screens in the previous section on GENLOCK SETUP. Like he genlock status indicators, the "Port0" and "Port1" columns in the table on the framelock panel contain indicators whose states mirror the states of the physical LEDs on the RJ45 ports. Thus, you may monitor the status of these ports from the software interface.

Any X screen can be added to the framelock network, provided that

  1. The system supporting the X Screen is configured to support framelock and is connected via RJ45 cable to the other systems in the framelock network.

  2. The system driving nvidia-settings can locate and has display privileges on the X screen that is to be included for framelock.

A system can gain display privileges on a remote system by executing

    % xhost +

on the remote system. Please see the xhost(1) man page for details. Typically, framelock is controlled through one of the systems that will be included in the framelock network. While this is not a requirement, note that nvidia-settings will only display the framelock panel when running on an X screen that supports framelock.

To enable synchronization on these X screens, click the "Enable Framelock" button. The screens may take a moment to stabilize. If they do not stabilize, you may have selected a mode timing that one or more of the systems cannot support. In this case you should disable synchronization by clicking the "Disable Framelock" button and refer to Appendix J, Programming Modes for information on mode timings.

Modifications to framelock settings (e.g. "Add/Remove X Screen") must be done while synchronization is disabled.

Framelock + Genlock

The use of framelock and genlock together is a simple extension of the above instructions for using them separately. You should first follow the instructions for Framelock Setup, and then to one of the systems that will be included in the framelock network, attach an external sync source. In order to sync the framelock network to this single external source, you must select the X Screen connected to the external source to be the signal master for the network. This is done by selecting the radio button in the "Master" column of the table on the framelock panel in nvidia-settings. If you are using a G-Sync based framelock network, you must also select the "Use House Sync" checkbox. Enable synchronization by clicking the "Enable Framelock" button. As with other framelock/genlock controls, you must select the signal master while synchronization is disabled.

Leveraging framelock/genlock in OpenGL

With the GLX_NV_swap_group extension, OpenGL applications can be implemented to join a group of applications within a system for local swap sync, and bind the group to a barrier for swap sync across a framelock network. A universal framecounter is also provided to promote synchronization across applications.