CWA for Windows - How to verify decoding capabilities of client-side graphics cards

book

Article ID: CTX696959

calendar_today

Updated On:

Description

Overview

Citrix Workspace app (CWA) for Windows automatically evaluates the hardware decoding capabilities of client-side graphics cards. This background check ensures efficient session performance by leveraging your local GPU rather than your CPU. The results of this benchmark evaluation are stored in a user-specific Windows Registry, literally HKEY_CURRENT_USER\SOFTWARE\Citrix\Ica Client\Engine\Configuration\Advanced\Modules\GfxRender\DecoderCaps\<GpuName>\<CodecName>\<YuvFormat>.

Understanding the Registry Structure

The subkeys under DecoderCaps map out a detailed matrix of what your hardware can actually decode in real-time.

1. <GpuName> subkey

This key represents the specific graphics processor detected on a client endpoint device, for example, NVIDIA Quadro P2200. If a client endpoint device possesses multiple graphics cards, it is expected to see distinct subkeys for each hardware asset.

2. <CodecName> subkey

Under each <GpuName> subkey, there are subkeys for individual video codecs, including,

  • H264 (Advanced Video Coding)
  • H265 (High Efficiency Video Coding / HEVC)
  • AV1 (AOMedia Video 1)

3. <YuvFormat> subkey

Under each <CodecFormat> subkey, there are subkeys for YUV color space sampling formats, including,

  • YUV420: The standard color sampling used for standard virtual desktop workloads.
  • YUV444: High-fidelity color sampling used for clear text, precise graphics, and multi-monitor setups.

4. Registry values under <YuvFormat> subkey

Under each registry path \DecoderCaps\<GpuName>\<CodecName>\<YuvFormat>, there're a few registry values with type REG_DWORD

Supported

  • 1: The GPU successfully passed the Citrix capability check for the specific codec and YUV format. Hardware acceleration is active.0
  • 0: The GPU lacks hardware decoding blocks for for the specific codec and YUV format. The system falls back to CPU-based software decoding.

NumberOfFrames

  • The total count of sample video frames that the Citrix graphics engine sent to the GPU hardware decoder during a pre-flight sanity check.

DecodeTimeInMs

  • The cumulative time, measured in milliseconds (ms), that the GPU hardware decoder took to decode all the frames specified in NumberOfFrames

FramePerSecond

  • The calculated decoding throughput speed achieved by the GPU during the pre-flight sanity check. Even though a GPU technically supports the specific codec and YUV format, in case it achieves a poor FPS (the exactly value depending on the target resolution) during the pre-flight sanity check, Supported registry value may still be toggled to 0.


Understanding the Registry Structure

The following registry values from a Windows client points indicates, GPU card "NVIDIA Quadro P2200" is capable of H265 hardware decoding with Yuv420 color sampling, while incapable of H265 hardware decoding with Yuv444_8Bit color sampling.

[HKEY_CURRENT_USER\SOFTWARE\Citrix\Ica Client\Engine\Configuration\Advanced\Modules\GfxRender\DecoderCaps\NVIDIA Quadro P2200\H265\Yuv420]
"Supported"=dword:00000001
"NumberOfFrames"=dword:00000078
"DecodeTimeInMs"=dword:000002ef
"FramePerSecond"=dword:0000009f
 
[HKEY_CURRENT_USER\SOFTWARE\Citrix\Ica Client\Engine\Configuration\Advanced\Modules\GfxRender\DecoderCaps\NVIDIA Quadro P2200\H265\Yuv444_8Bit]
"Supported"=dword:00000000
"NumberOfFrames"=dword:00000001
"DecodeTimeInMs"=dword:000002da
"FramePerSecond"=dword:00000001

Issue/Introduction

The article describes how to verify decoding capabilities of client-side graphics cards