Boost Your Remote Desktop Performance
Achieving native experience through RDP. Can it reach 60FPS?
π§Ύ Problem
Your RDP environment has poor performance. Poor performance can include the following, but not limited to:
- Frame drops
- Poor image quality or compression
- High latency
- Disabled GPU (e.g. WebGL unavailable)
π‘ Solution
π Materials needed
- A host PC (Remote Desktop Session Host)
- A client device (Remote Desktop Connection Client)
β Disclaimers
This tutorial is written for Remote Desktop Connection Client in mobile devices such as Android or iOS devices. It might have less performance improvements for clients on PC.
π Prerequisites
You need a working Remote Desktop setup to configure further. WOL (Wake-on-LAN) configuration for the host PC is recommended since the process requires restarting the host PC.
You would also need administrative rights on your local account in order to change group policy options.
You might need a stable and fast internet connection to see the full performance improvement. Internet connection with speed exceeding 5Mbps is recommended.
π₯ Remote Desktop setup
You need Windows 10 Pro or higher in order to connect with Remote Desktop Protocol.
β GPU Specifications
You need a GPU or its driver supporting DirectX 11 or higher. And to use enhanced graphics on your Remote Desktop session, your system needs to support RemoteFX.
Note: Most of modern GPUs and Windows 10 system supports both.
π± Client application
You need a client to establish a connection to the host PC. You can get clients for your platform here.
π Problem details
π Lack of configuration options on mobile clients
Compared to performance options in PC client, mobile clients only have the option to change the resolution. We can maximize the performance by modifying settings from the host PC.
π Lack of hardware acceleration using GPU
By default, the display adapter driver for Remote Desktop connection is WDDM
. Therefore, you wonβt see the GPU installed on your host PC in Device Manager or utilitize its performance. We can disable WDDM graphics on Remote Desktop connection by modifying group policy on the host PC.
π Step-By-Step Guide
Step 1. Open Local Group Policy Editor
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.
Step 2. Configure Remote Session Environment settings
In order to achieve smooth experience, we can compress the image from the host PC to reduce the bandwith, which will result in more frames per second.
Note: I recommend to set all the settings as I did for maximum framerate, but you can fine tune for your use case.
Step 2.1. Locate Remote Session Environment folder
Navigate to Computer Configuration β Administrative Templates β Control Panel β Remote Desktop Services β Remote Desktop Session Host β Remote Session Environment.
In this folder, you will find all the options you can modify to fine tune your Remote Desktop experience.
Note: The settings in the screenshot above is frame rate optimized settings. You can follow these settings if you are looking for smoothest experience over better image quality.
Disable Use WDDM graphics display driver for Remote Desktop Connections
By disabling this policy setting, Remote Desktop Connections will not use WDDM graphics display driver. In this case, the Remote Desktop Connections will use XDDM graphics display driver.
β Warning: This policy setting change requires restarting the host PC.
Enable Use hardware graphics adapters for all Remote Desktop Services sessions
By enabling this policy setting, all Remote Desktop Services sessions use the hardware graphics renderer instead of the Microsoft Basic Render Driver as the default adapter. This means you will be able to recognize the GPU installed in the host PC from the Remote Desktop session.
Enable Use advanced RemoteFX graphics for RemoteApp
By enabling this policy setting, RemoteApp programs will use advanced graphics, including support for transparency, live thumbnails, and seamless application moves.
Note: This policy setting applies only 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 policy setting, the server (host PC) will use H.264/AVC 444 as the codec in an RDP 10 connection where both the client and server can use H.264/AVC 444. This will improve the performance in watching videos encoded in H.264 codec.
Enable Configure H.264/AVC hardware encoding for Remote Desktop Connections
By enabling this policy setting, 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 policy setting, 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 bandwith 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 policy setting 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 policy setting, 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 policy setting, 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 bandwith 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 policy setting, 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.
β Warning: This policy setting change requires restarting the host PC.
Step 3. Configure RemoteFX settings
In order to utilitize 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 utilitizes the GPU installed on the host PC to render the graphics and compress it over the network to optimize the bandwith 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 bandwith 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
Step 3.1. Locate RemoteFX for Windows Server 2008 R2 folder
Navigate to Computer Configuration β Administrative Templates β Control Panel β Remote Desktop Services β Remote Desktop Session Host β Remote 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 policy setting, 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 policy setting, 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 policy setting, you can specify the visual experience that remote users receive in Remote Desktop Services 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
π© Disclaimer: This post was inspired from this post by ceol.
Comments