Linux Virtual Delivery Agent

Non-virtualized GPUs

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

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

This article provides information on enabling HDX 3D Pro for non-virtualized GPUs.

Prerequisites

  • Enable HDX 3D Pro. To do so, 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.
  • For GPUs that the NVIDIA Linux Capture SDK supports, hardware acceleration is enabled by default after you enable HDX 3D Pro. No additional configuration is required.
  • For GPUs that the NVIDIA Linux Capture SDK does not support, 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.

Configuration

Modify Xorg configuration files

For NVIDIA non-virtualized GPUs

The configuration files are installed and set automatically.

For other GPUs

You must modify the four template configuration files installed under /etc/X11/:

  • 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

Enable XDamage

If you are using a GPU that is not listed in the supported hardware section of the release notes for NVIDIA Linux Capture SDK, enable XDamage using:

/opt/Citrix/VDA/bin/ctxreg create -k "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Citrix\XDamage" -t "REG_DWORD" -v "XDamageEnabled" -d "0x00000001" --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.3.

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 Intel GPU is occupied by the display manager and not available for Citrix remote sessions.

    sudo systemctl disable --now gdm

Troubleshooting

No or garbled graphic output

If you can run 3D applications locally and all configurations are correct, 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.

Hardware encoding does not work

If you use Xdamage, only software encoding is supported.

Non-virtualized GPUs