The NVIDIA FreeBSD Driver supports GLX when Xinerama is enabled on similar GPUs. The Xinerama extension takes multiple physical X screens (possibly spanning multiple GPUs), and binds them into one logical X screen. This allows windows to be dragged between GPUs and to span across multiple GPUs. The NVIDIA driver supports hardware accelerated OpenGL rendering across all NVIDIA GPUs when Xinerama is enabled.
To configure Xinerama
Configure multiple X screens (refer to the XF86Config(5x) or xorg.conf(5x) man pages for details).
Enable Xinerama by adding the line
Option "Xinerama" "True"
to the "ServerFlags" section of your X config file.
Using identical GPUs is recommended. Some combinations of non-identical, but similar, GPUs are supported. If a GPU is incompatible with the rest of a Xinerama desktop then no OpenGL rendering will appear on the screens driven by that GPU. Rendering will still appear normally on screens connected to other supported GPUs. In this situation the X log file will include a message of the form:
(WW) NVIDIA(2): The GPU driving screen 2 is incompatible with the rest of (WW) NVIDIA(2): the GPUs composing the desktop. OpenGL rendering will (WW) NVIDIA(2): be disabled on screen 2.
NVIDIA's GLX implementation only supports Xinerama when physical X screen 0 is driven by the NVIDIA X driver. This is because the X.Org X server bases the visuals of the logical Xinerama X screen on the visuals of physical X screen 0.
When physical X screen 0 is not being driven by the NVIDIA X driver and Xinerama is enabled, then GLX will be disabled. If physical X screens other than screen 0 are not being driven by the NVIDIA X driver, OpenGL rendering will be disabled on them.
Only the intersection of capabilities across all GPUs will be advertised.
The maximum OpenGL viewport size depends on the hardware used, and is described by the following table. If an OpenGL window is larger than the maximum viewport, regions beyond the viewport will be blank.
|OpenGL Viewport Maximums in Xinerama|
|GeForce GPUs before GeForce GTX 400:||8192 x 8192 pixels|
|GeForce GTX 400 and later GPUs:||16384x16384 pixels|
|Quadro GPUs before Fermi:||8192 x 8192 pixels|
|Quadro Fermi and later GPUs:||16384x16384 pixels|
X configuration options that affect GLX operation (e.g.: stereo, overlays) should be set consistently across all X screens in the X server.
Versions of XFree86 prior to 4.5 and versions of X.Org prior to 6.8.0 lack the required interfaces to properly implement overlays with the Xinerama extension. On earlier server versions mixing overlays and Xinerama will result in rendering corruption. If you are using the Xinerama extension with overlays, it is recommended that you upgrade to XFree86 4.5, X.Org 6.8.0, or newer.