Boost Your RDP Performance

Ways to optimize RDP for mobile clients and enable hardware acceleration.

Problem

Your RDP environment has poor performance, such as:

  • Frame drops
  • Poor image quality or compression
  • High latency
  • Disabled GPU (e.g. WebGL unavailable)
This tutorial is primarily for clients on mobile devices. It might have less performance improvements for clients on PC.

Problem details

Lack of configuration options on mobile clients

Compared to performance options in PC client, mobile clients can only configure the session resolution.

Lack of hardware acceleration using GPU

By default, the display adapter driver for RDP is WDDM , instead of the GPU on the host PC.

Solution

Prerequisites

  • Working Remote Desktop setup with:

  • Admin access to change group policy options
  • Stable and fast internet connection (5Mbps+) to see proper performance improvement
If you don’t have physical access to the Host PC, wake-on-LAN configuration is recommended as the following configuration requires multiple restarts.

Requirements for GPU Acceleration

  • GPU supporting DirectX 11 or higher
  • OS support for RemoteFX to use enhanced graphics over RDP
Most modern GPUs and Windows 10 supports both DX11 and RemoteFX.

Step-By-Step Guide

1 Open Local Group Policy Editor

Run Window, Opening gpedit.msc

Press Win + R to open Run. Type gpedit.msc and press OK.

Note: You can also search for Group Policy or gpedit on the start menu. {: .notice–info}

2 Configure Remote Session Environment settings

In order to achieve smooth experience, we can compress the image from the host PC to reduce the bandwidth, which will result in more frames per second.

This post focuses on optimizing for maximum frame rate over better image quality. Fine tune the settings for your use cases.

2.1 Locate Remote Session Environment folder

Navigate to Computer ConfigurationAdministrative TemplatesControl PanelRemote Desktop ServicesRemote Desktop Session HostRemote Session Environment.

In this folder, you will find all the options you can modify to fine tune your Remote Desktop experience.

Disable Use WDDM graphics display driver for Remote Desktop Connections

By disabling this, connections will use XDDM instead of WDDM graphics display driver.

This change requires restarting the host PC.

Enable Use hardware graphics adapters for all Remote Desktop Services sessions

By enabling this, sessions will use the GPU instead of the default renderer.

Enable Use advanced RemoteFX graphics for RemoteApp

By enabling this, RemoteApp programs will use advanced graphics, including support for transparency, live thumbnails, and seamless application moves.

This only applies to RemoteApp programs and does not apply to remote desktop sessions.

Enable Prioritize H.264/AVC 444 graphics mode for Remote Desktop Connections

By enabling this, the server (host PC) will use H.264/AVC 444 codec in RDP 10 connections where both the client and server supports the codec. This improves the performance in watching videos encoded in H.264.

Enable Configure H.264/AVC hardware encoding for Remote Desktop Connections

By enabling this, Remote Desktop Conection will try to use H.264/AVC hardware encoding support for applicable clients. This will improve the performance in watching videos encoded in H.264 codec if the client supports hardware encoding.

Enable and configure Configure compression for RemoteFX data

By enabling this, you can specify which RDP compression algorithm to use.

I prioritized frame rates over image quality, so I selected Optimized to use less network bandwidth. This will decrease the network bandwidth usage with compressing the image a bit more. From my experience, the image compression wasn’t noticeable but it gave me higher frame rates. I recommend using this option.

If you need better image quality even with lags, you can select Optimized to use less memory or Do not use an RDP compression algorithm option.

Enable and configure Configure image quality for RemoteFX Adaptive Graphics

By enabling this and set quality to Low, RemoteFX Adaptive Graphics uses an encoding mechanism that results in low quality images. This mode consumes the lowest amount of network bandwidth of the quality modes. This will increase the maximum refresh rate of the Remote Desktop session.

If you need better image quality even with lags, you can select Medium or High option. The performance will depend on your internet connection.

Enable Enable RemoteFX encoding for RemoteFX clients designed for Windows Server 2008 R2 SP1

By enabling this, you can configure graphics encoding to use the RemoteFX Codec on the Remote Desktop Session Host server. This policy setting applies only to clients that are using Remote Desktop Protocol (RDP) 7.1, and does not affect clients that are using other RDP versions. This will enhance the Remote Desktop experience in certain client version.

Enable and configure Configure RemoteFX Adaptive Graphics

By enabling this, you can configure the default RemoteFX experience settings.

As mentioned above, I prioritized frame rates over image quality, so I selected Optimize for minimum bandwidth usage. This will decrease the network bandwidth usage with compressing the image. From my experience, the image compression wasn’t noticeable for most of the time but it gave me higher frame rates. I recommend using this option.

Disable Use WDDM graphics display driver for Remote Desktop Connections

By disabling this, Remote Desktop Connections will not use WDDM graphics display driver. In this case, the Remote Desktop Connections will use XDDM graphics display driver. This will enable you to utilitize the performance of your GPU installed on the host PC.

This change requires restarting the host PC.

Step 3. Configure RemoteFX settings

In order to utilize the GPU installed on the host PC, we have to enable RemoteFX on the host PC first.

What is RemoteFX?

Microsoft RemoteFX is a set of technologies that enhance visual experiences in Remote Desktop Protocol (RDP). It utilizes the GPU installed on the host PC to render the graphics and compress it over the network to optimize the bandwidth usage. It means it uses more of your hardware to make your Remote Desktop environment smoother.

For example, if you are trying to send 1080p 60fps session over the internet without any compression, you would need almost 3 Gbit/s network connection. But with RemoteFX configured, the host PC uses an efficient compression algorithm to reduce the bandwidth usage, and also processes it with the installed hardware. And also, since the graphics are rendered from the server, you can use graphic intense applications over Remote Desktop.

Read more: RemoteFX on Wikipedia {: .notice}

Step 3.1. Locate RemoteFX for Windows Server 2008 R2 folder

Local Group Policy Editor Window, RemoteFX for Windows Server 2008 R2

Navigate to Computer ConfigurationAdministrative TemplatesControl PanelRemote Desktop ServicesRemote Desktop Session HostRemote Session Environment - RemoteFX for Windows Server 2008 R2.

In this folder, you will find all the options you can modify to fine tune your RemoteFX configurations.

Enable Configure RemoteFX

By enabling this, RemoteFX will be enabled. RemoteFX will deliver a rich user experience over LAN connections and RDP 7.1.

Enable and configure Optimize visual experience when using RemoteFX

By enabling this, you can specify the visual experience in Remote Desktop Connection (RDC) connections that use RemoteFX.

For Screen capture rate (frames per second), I selected Highest (best quality) for maximum refresh rate, and for Screen Image Quality, I selected Medium (default) for decent image quality. In my case, selecting Lowest resulted in pixelated graphics in some occasions.

Enable and configure Optimize visual experience for Remote Desktop Service Sessions

By enabling this, you can specify whether to optimize for media or text in RDP sessions.

In my case, I watched some videos and photos through the Remote Desktop, so I selected Rich multimedia. You can configure this option to your preferences.

Step 4. Apply changes

After making changes in Local Group Policy Editor, you can just close the window as the settings are automatically applied. If you changed any settings that require restart, restart your host PC once. After your host PC restarts, you can reconnect to the session and compare the differences in refresh rate or image quality.

Bonus: Testing your refresh rate

If you are not sure about whether you are getting 60fps on your Remote Desktop session, you can use testufo.com to test your refresh rate.

Troubleshooting: Still having performance issues?

The problems could be one or more of the following:

  • Internet connection speed / latency between client and host
  • Driver problems for GPU installed on host PC
  • Didn’t restart the host PC after configuration


This post was inspired from this post by ceol.