Linux Virtual Delivery Agent

Non-virtualized GPUs

In the Linux VDA documentation, non-virtualized GPUs refer to:

  • GPUs used in Remote PC Access scenarios
  • GPUs passed through from a hypervisor

This article provides information on supporting non-virtualized GPUs.

Enable HDX 3D Pro for NVIDIA GPUs that support the NVIDIA Capture SDK for Linux

For NVIDIA GPUs that support the NVIDIA Capture SDK for Linux, enable HDX 3D Pro simply by setting CTX_XDL_HDX_3D_PRO to Y when installing the Linux VDA. No additional configuration is required. Hardware acceleration is enabled by default after you enable HDX 3D Pro.

Compatible with NVIDIA GPUs that don’t support the NVIDIA Capture SDK for Linux and GPUs from other manufacturers such as AMD and Intel


In this scenario, only software encoding is supported.

Step 1: Set CTX_XDL_HDX_3D_PRO to Y when installing the Linux VDA

For information about environment variables, see Step 8: Set up the runtime environment to complete the installation.

Step 2: Install Xdamage

For example, you can run sudo apt-get install -y libxdamage1 to install XDamage on Ubuntu 20.04. Typically, XDamage exists as an extension of XServer.

Step 3: Enable XDamage by running the following command

/opt/Citrix/VDA/bin/ctxreg create -k "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Citrix\XDamage" -t "REG_DWORD" -v "XDamageEnabled" -d "0x00000001" --force

Step 4: Modify Xorg configuration files

You can find the following four template configuration files under /etc/X11. Based on the number of connected monitors, modify one of the template configuration files with the corresponding number in its name. For example, if only one monitor is connected, modify the template configuration file with the number 1 in its name, that is, ctx-driver_name-1.conf. If two monitors are connected, modify the template configuration file with the number 2 in its name, that is, ctx-driver_name-2.conf.

  • ctx-driver_name-1.conf
  • ctx-driver_name-2.conf
  • ctx-driver_name-3.conf
  • ctx-driver_name-4.conf

Using ctx-driver_name-1.conf as an example, do the following to modify the template configuration files:

  1. Replace driver_name with your actual driver name.

    For example, if your driver name is intel, you can change the configuration file name to ctx-intel-1.conf.

  2. Add the video driver information.

    Each template configuration file contains a section named “Device,” which is commented out. This section describes the video driver information. Enable this section before adding your video driver information. To enable this section:

    1. See the guide provided by the GPU manufacturer for configuration information. A native configuration file can be generated. Verify that your GPU can work in a local environment with the native configuration file.

    2. Copy the “Device” section of the native configuration file to ctx-driver_name-1.conf.

  3. Run the following command to set the registry key so that the Linux VDA can recognize the configuration file name set in Step 1.

    /opt/Citrix/VDA/bin/ctxreg create -k "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Citrix\XDamage" -t "REG_SZ" -v "DriverName" -d "intel" --force

Monitor blanking for Remote PC Access VDAs

The Linux VDA supports physical monitor blanking for Remote PC Access VDAs that use non-virtualized GPUs.

Fully tested Linux distributions that support the feature include Ubuntu 20.04 and Debian 11.

The feature is disabled by default. To enable it, complete the following two steps:

  1. Install the evdi-dkms package based on your Linux distribution:

    sudo apt install evdi-dkms
  2. Enable graphics display offloading to EVDI:

    /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\Thinwire" -t "REG_DWORD" -v "Evdi" -d "0x00000001" --force
  3. If you are using an Intel GPU, disable the display manager. Otherwise, the display manager occupies and makes the Intel GPU unavailable for Citrix remote sessions.

    sudo systemctl disable --now gdm


No or garbled graphic output

If you can run 3D applications locally and all configurations are correct, then missing or garbled graphic output is the result of a bug. Use /opt/Citrix/VDA/bin/setlog and set GFX_X11 to verbose to collect the trace information for debugging.