Citrix Blogs

Improved User Experience: Hardware Decoding for Citrix Windows Receiver

Today, the demand for 4k screen resolutions and multiple monitors has increased with various users like graphic designers, financial traders, medical diagnostic professionals, etc. 4k monitors are becoming the standard, widely available with affordable price. Citrix support for 4K and multiple monitors is detailed in CTX201696.

Since Citrix Receiver for Linux is typically used with thin clients, it was the first version of Citrix Receiver to be enhanced with H.264 hardware decoding. But in previous versions of the Receiver for Windows, only CPU-based decoding was available.

When a Windows based thin client was used with 4k monitors, performance and interactivity inside the ICA session were often degraded. While powerful clients like the Intel NUC easily deliver 6-7 frames per second with complex Dassault CATIA or Siemens 3D models, many Windows-based thin clients have performed poorly.

The reason for poor performance on a thin client can usually be attributed to its inadequate ability to decode a CABAC enabled H.264 stream, which is the default graphics mode. Yet, on many thin clients and other endpoint devices some kind of GPU (or IGP) exists, be it discrete or integrated (e.g. AMD APU, Intel Iris Pro, etc.). These GPUs have the capability of decoding CABAC enabled H.264 streams.

With the latest Citrix Receiver for Windows release 4.4 (with HDX engine 14.4), the GPU can be used for H.264 decoding wherever it is available. The API layer used for GPU decoding is DXVA (DirectX Video Acceleration).

To support DXVA completely we updated our rendering pipeline from legacy GDI-based rendering to Direct3D rendering.

Quick Comparison

Let’s have a look on how the old Windows Receiver performed compared the new Receiver 4.4 on with monitors:

Similar performance tests have been performed with 1-4 monitors with different resolutions and on different thin clients. From our tests we are seeing that the frame rate (FPS) has doubled which allows for much better user interactivity.

Client side CPU usage has dropped by 50-60%. This enables lower cost thin clients to be used and allows the user to run any other app on the end point.

How can the user or administrator know if a particular thin client is capable of doing DXVA decoding? For this we use a third party tool called DXVA Checker. After you install the tool on the thin client look for the highlighted entry in the below snapshot to confirm if the client side GPU supports DXVA:

On a few thin clients “H264*” entries are seen, but “4K” will not be present. This means that thin client still supports DXVA decoding, but with lower resolution. In such cases if the user tries to open an ICA session with greater resolution (i.e., greater than 1920×1200), then Citrix Receiver silently falls back to legacy CPU-based decoding which uses GDI rendering.

From Cherimoya (v14.5) Receiver onwards, hardware acceleration is ON by default. For previous versions, it can be enabled via client-side policies:

Steps to enable Hardware decoding:

  1. Copy “receiver.adml” from “root\Citrix\ICA Client\Configuration\en” to “C:\Windows\PolicyDefinitions\en-US”
  2. Copy “receiver.admx” from “root\Citrix\ICA Client\Configuration” to “C:\Windows\PolicyDefinitions\”
  3. Go to “Local Group policy editor”
  4. Under Computer Configuration-> Administrative Templates -> Citrix Receiver -> User Experience, open “Hardware Acceleration for graphics”
  5. Check “Enabled” and click on “Ok”

To validate if the policy has applied and hardware acceleration is being used for an active ICA session, look for below registry entries:

Registry Path: HKCU\Software\Citrix\ICA Client\CEIP\Data\GfxRender\<session ID>

Value for Graphics_GfxRender_Decoder and Graphics_GfxRender_Renderer should be 2. If the value is 1, that means CPU based decoding is being used.

Limitations:

  1. If the client has two GPU’s and if one of the monitors is active on the 2nd GPU, in this case CPU decoding will be used.
  2. When connecting to a XenApp 7.x server running on Windows Server 2008 R2, our recommendation is not to use hardware decoding on the user’s Windows device. If enabled, issues like slow performance while highlighting text and flickering issues will be seen.

Other graphic mode:

As we know only H.264 mode uses hardware decoding, the following table gives a clear picture of what decoding and rendering will be used for different graphics modes:


Useful Links

Exit mobile version