I’ve touched on this topic before in previous blog posts, and I thought it about time I gave some explicit guidance on how to tune Citrix HDX graphics for your workloads, assuming you have 7.18 or later.
We haven’t quite reached the stage of having a “one size fits all” encoder, and until we do, we use policies to help the Citrix graphics encoder make the right decisions based on the types of workloads you want to deploy. With that said, we’ve definitely made steps in the right direction over the past couple of years, so much so that, today, it really comes down to one question:
“Do I need to deliver 3D/CAD-style workloads?”
No: Don’t set any graphics policies — leave everything at their defaults (I know that might be difficult for some of you who love to know what all the knobs and buttons do!).
Yes: set the “Visual Quality” policy to “Build to Lossless”.
Let’s look at the two options in a little more detail. First off, “No”: what actually happens when everything is left at their out-of-the-box defaults is that the HDX graphics encoder configures itself to try and optimize for performance, image quality, scalability and bandwidth. Just by looking at the pixels, we’re able to detect video regions and encode them with H.264 to try and maintain a smooth frame rate. Under the covers, we do all sorts of clever stuff to make this happen. It’s the most “balanced” setting and should be fine for the majority of typical desktop use cases (think Office, Chrome/Edge/I.E., etc.). You could go further, and have a completely pixel perfect experience (“Visual Quality” = “Always Lossless”) at the expense of bandwidth and performance, however, this might be a requirement for some use cases (e.g., Medical imagery).
Now “Yes”. “Build to Lossless” optimizes for one thing: performance. Here, we ask the encoder to sacrifice quality in order to maintain the best frame rate possible (up to 30 FPS by default). Once stuff stops moving, we do exactly what we say on the tin: build the screen to pixel perfect (lossless). If you want to move off again during the build process, you can, as we build in steps. There is one caveat to using this mode: you need to be using a recent-ish Windows or Linux Receiver. The others haven’t quite caught up yet but we are addressing this – watch this space. If you’re using one that isn’t supported, then try setting the following policy (without any others):
“Use Video Codec for Compression” to “For the entire screen”
This activates full-screen H.264 (or H.265) encoding which gives you the great interactive performance without the build to lossless step. We added this a long time ago, so all Receivers support it, including the Raspberry-Pi based Receivers which, incidentally, works quite well.
Some final points: in all of the above cases, if hardware encoding is available, we will try our best to use it. Actually, if you want to try out H.265, hardware encoding is a requirement. Also, setting “Build to Lossless” trumps the “Use Video Codec for Compression for the entire screen” policy.
That’s pretty much it! The eagle-eyed amongst you will notice I’ve not talked about some of the other graphics policies available. I’ve done this on purpose: the guidance I’ve provided here will hopefully address most use cases. There are of course edge cases which I’m happy to talk more about – just get in touch, by e-mail or in the comments below. Thanks for your time 🙂
Citrix TechBytes – Created by Citrix Experts, made for Citrix Technologists! Learn from passionate Citrix Experts and gain technical insights into the latest Citrix Technologies.
Want specific TechBytes? Let us know! firstname.lastname@example.org