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
toY
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 runsudo 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:
-
Replace driver_name with your actual driver name.
For example, if your driver name is
intel
, you can change the configuration file name toctx-intel-1.conf
. -
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:
-
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.
-
Copy the “Device” section of the native configuration file to ctx-driver_name-1.conf.
-
-
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 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
<!--NeedCopy-->
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:
-
Install the
evdi-dkms
package based on your Linux distribution:sudo apt install evdi-dkms <!--NeedCopy-->
-
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-->
-
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 <!--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/bing/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.