Linux Virtual Delivery Agent

Non-vGPU graphics cards

Non-vGPU graphics cards refer to graphics cards that don’t support the NVIDIA virtual GPU (vGPU) solution. This article provides information on using non-vGPU graphics cards.

Prerequisites

To use non-vGPU graphics cards, you must:

Configuration

Modify Xorg configuration files

For NVIDIA graphics cards

If you are using an NVIDIA driver, the configuration files are installed and set automatically.

For other graphics cards

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 card manufacturer for configuration information. A native configuration file can be generated. Verify that your card can work in a local environment with the native configuration file when you are not running a Linux VDA session.

    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
    <!--NeedCopy-->
    

Enable non-vGPU graphics

The non-vGPU graphics feature is disabled by default. You can run the following command to enable it by setting the XDamageEnabled value to 1.

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

Monitor blanking for Remote PC Access VDAs

The Linux VDA supports physical monitor blanking for Remote PC Access VDAs that use non-vGPU graphics cards. This enhancement offloads graphics display to Extensible Virtual Display Interface (EVDI) virtual monitors.

Note:

The maximum number of EVDI virtual monitors varies for different distributions.

Monitor blanking works for Ubuntu 20.04, Debian 11.3, and Debian 10.9 VDAs. To use monitor blanking, complete the following two steps:

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

    sudo apt install evdi-dkms
    <!--NeedCopy-->
    
  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
    <!--NeedCopy-->
    
  3. If you are using an Intel graphics card, disable the display manager. Otherwise, the Intel card is occupied by the display manager and not available for Citrix remote sessions.

    sudo systemctl disable --now gdm
    <!--NeedCopy-->
    

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

This feature supports only software encoding.

Non-vGPU graphics cards