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, setCTX_XDL_HDX_3D_PROtoYwhen installing the Linux VDA. For information about environment variables, seeStep 8: Set up the runtime environment to complete the installation.
  • For GPUs that theNVIDIA Linux Capture SDKsupports, hardware acceleration is enabled by default after you enable HDX 3D Pro. No additional configuration is required.
  • For GPUs that theNVIDIA Linux Capture SDKdoes not support, installXDamage. For example, you can runsudo apt-get install -y libxdamage1to 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. -相依
  • ctx-driver_name-2.conf
  • ctx-driver_name-3.conf
  • ctx-driver_name-4.conf

Usingctx - driver_name - 1. -相依作为一个例子,do the following to modify the template configuration files:

  1. Replacedriver_namewith your actual driver name.

    For example, if your driver name isintel, you can change the configuration file name toctx-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 toctx - driver_name - 1. -相依.

  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 forNVIDIA Linux Capture SDK, enableXDamageusing:

/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 theevdi-dkmspackage 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/bing/setlog and set GFX_X11 to verbose to collect the trace information for debugging.

Hardware encoding does not work

If you useXdamage, only software encoding is supported.

Non-virtualized GPUs