Enable exclusive display
By default a Holoscan visualization application renders into a window that the desktop’s window
manager composites with everything else on the screen. Compositing adds at least one frame of
latency and lets other applications compete for the panel. Exclusive display mode removes the
window system from the path: HolovizOp acquires a display that no desktop session owns, sets a
video mode, and scans out to it directly through the NVIDIA driver.
This page covers the supported configuration, how to select a display from an application, and
the errors you will see when a prerequisite is missing. The visualization module’s README in the
SDK source tree (public/modules/visualization/README.md, section “Exclusive display”) documents
the implementation.
In this release exclusive display is supported on Linux only, through the kernel’s DRM interface
(VK_EXT_acquire_drm_display), and only while no display server owns the GPU. Running inside an
X11 or Wayland desktop session, and on Windows, is not supported yet.
Prerequisites
-
Linux with an NVIDIA GPU and driver. No
libdrmis required: HoloViz talks to the kernel DRM interface directly, so the Tegralibdrmshim shipped on NVIDIA IGX systems does not affect it. -
No display server owning the GPU. The application must become DRM master, which fails while an X server or Wayland compositor holds the device. Stop the display manager and run from a text console (Ctrl-Alt-F3) or an SSH session:
-
Access to the DRM device nodes. The user must belong to the
videoandrendergroups, which own/dev/dri/card*and/dev/dri/renderD*: -
In a container, pass the device nodes and the group ids, and use the NVIDIA runtime with
NVIDIA_DRIVER_CAPABILITIES=allso the Vulkan ICD and the display libraries are mounted:The SDK’s
./run launchhelper adds the group ids and the NVIDIA runtime for you; append--device /dev/driifls /dev/driis empty inside the container.
Find the display name
Display names are the DRM connector names (DP-2, HDMI-A-1). They are not the names an X11
session shows in xrandr or in the desktop display settings for the same panels: a monitor listed
as DP-0 under X may be DP-2 here. The holoviz_direct_display example, built with the SDK
examples, lists what is connected and who owns it:
Names, modes, and the VRR marker depend on your hardware. A display reported as compositor-owned
is still held by a desktop session; only available for direct display panels can be acquired.
Add --display DP-2 --frames 600 to render a color sweep to the panel and confirm the path works
before wiring up an application.
Select the display in an application
Pass an ExclusiveDisplaySinkDesc instead of a WindowSinkDesc when constructing HolovizOp.
Everything else about the operator (layers, inputs, trigger) is unchanged.
ExclusiveDisplaySinkDesc fields:
The surface keeps the chosen mode for the life of the operator: it never resizes, and layers are scaled to it. The display is released when the graph stops.
On NVIDIA integrated GPUs (Orin, Thor), high-refresh-rate and high-bandwidth modes may be unstable
in direct display, and a failure can hang the display engine until the system is power cycled.
Direct display therefore applies two conservative limits on these systems: at most 144 Hz, and at
most the pixel bandwidth of 2560x1440 at 144 Hz (so 3840x2160 is limited to 60 Hz). Modes beyond
either limit are left out of mode selection, a warning reports the most demanding mode the panel
offers, and a request for such a mode fails as an unsupported mode. Set
HOLOVIZ_DISABLE_IGPU_HZ_CAP=1 to lift both limits and use such modes at your own risk. Discrete
GPUs are not affected.
Troubleshooting
Variable refresh (G-SYNC / Adaptive-Sync) is reported for a panel that advertises it but is not controlled from this path; whether the driver engages it is the driver’s decision. For fullscreen windows on a desktop, see Enable G-SYNC.