# RemoteFX

Microsoft RemoteFX is a Microsoft brand name that covers a set of technologies that enhance visual experience of the Microsoft-developed remote display protocol Remote Desktop Protocol (RDP). RemoteFX was first introduced in Windows Server 2008 R2 SP1 and is based on intellectual property that Microsoft acquired and continued to develop since acquiring Calista Technologies. It is a part of the overall Remote Desktop Services workload.

## History
### Windows Server 2008 R2 SP1

RemoteFX components introduced in Windows Server 2008 R2 SP1 include:
* RemoteFX vGPU: the ability to present a virtualized instance of a physical GPU into multiple Windows 7 virtual machines. This provides VMs with access to the physical GPU, enabling hardware-acceleration for rich graphics scenarios such as 3D rendering and game play.
* RemoteFX USB Redirection: generalized support for redirecting USB devices into Windows 7 VMs. This allows peripheral devices connected to thin client terminals to be used within virtual machines.
* RemoteFX Codec (also referred to as RemoteFX Calista Codec): a lossy codec that is capable of preserving a high-fidelity experience for both video and text. The RemoteFX Codec does not require any special hardware, and uses the CPU for encoding.

### Windows Server 2012

In Windows Server 2012, the following components were added to RemoteFX.
* RemoteFX Adaptive Graphics: The RemoteFX graphics pipeline dynamically adapts to various runtime conditions, such as graphic content types, CPU and network bandwidth availability, and client rendering speed.
* RemoteFX for WAN: a series of changes to the network transport pipeline to support UDP and ensure a fluid experience in both WAN and wireless network configurations.
* RemoteFX Multi-Touch: supports remoting of gestures (e.g. pinch and zoom) between the client and host with up to 256 touchpoints
* RemoteFX Media Redirection API: allows Voice over IP (VoIP) applications to natively integrate with RemoteFX, and enables transmission and rendering of audio and video content directly on the client side.
* Choice of GPU: All RemoteFX features can be used with either a software-emulated GPU, which is available by default in all virtual machines and session hosts, or they can benefit from hardware acceleration when a physical video card is placed in the server and the RemoteFX vGPU is enabled.
In addition, the following components were updated:
* RemoteFX vGPU: updated to support DirectX 11
* RemoteFX USB Redirection: updated to support all desktop remoting scenarios vGPU-enabled virtual machines, traditional VMs, desktop sessions and physical desktop hosts
* RemoteFX Codec (also referred to as RemoteFX Progressive Calista Codec): updated to include progressive rendering, which is more effective for rendering content over the WAN by sending images at full resolution only if bandwidth permits.

### Windows Server 2016, Windows 10 Enterprise

In Windows Server 2016 (RDP 10), the following components were added to RemoteFX.
* OpenGL 4.4 and OpenCL 1.1 API support in a virtual machine with the RemoteFX adapter
* More dedicated VRAM for the RemoteFX adapter
* Various performance improvements in transport and API implementations
RemoteFX Media Streaming (H.264) replaced Multi Media Redirection (MMR). Note: MMR is now completely removed from RDP 10 given that RemoteFX Media Streaming works for all types of video content whereas MMR which just worked for some.

### RemoteFX vGPU Deprecation

Beginning in July 2020 RemoteFX vGPU was deprecated in all versions of Windows because of security vulnerabilities. It was scheduled to be completely removed in February 2021.

## Requirements

In Windows Server 2008 R2, the RemoteFX Codec could be leveraged for both session hosting (Remote Desktop Session Hosts) and VDI scenarios (and Remote Desktop Virtualization Hosts). The RemoteFX vGPU and RemoteFX USB Redirection features could only be used in VDI scenarios (Remote Desktop Virtualization Hosts).
Windows 10 version 1511 brings RemoteFX to client Hyper-V, removing dependency on Remote Desktop Services role.
Generation 2 VMs on Windows Server 2012 R2 do not support RemoteFX. Windows Server 2016 added such support.
In Windows Server 2012, all features of RemoteFX (with the exception of the vGPU) can be used with or without a physical GPU present in the server. When no GPU is present in the server, a synthetic software-emulated GPU is used to render content. When a GPU is present in the server, it can be used to hardware accelerate the graphics via the RemoteFX vGPU feature.

### RemoteFX vGPU Requirements

The RemoteFX vGPU has the following requirements:
* Hyper-V must be installed on the server. The VMs must be created and run using Hyper-V.
* The server's CPU must support Second Level Address Translation (SLAT), and have it enabled.
* For Windows Server 2008 R2 SP1, at least one DirectX 9.0c and 10.0 capable graphics card must be installed on the server.
* For Windows Server 2012, at least one DirectX 11.0 capable graphics card with a WDDM 1.2 driver must be installed on the server.
* The host machine must not be a Domain Controller. For single server configuration, Microsoft supports running Domain Controller as a Hyper-V virtual machine.
Windows Server 2008 R2 with SP1 has been tested for up to twelve virtual machines per GPU, for a total of twenty-four virtual machines on two physical GPUs.
Although any GPU meeting the above requirements will be capable of using RemoteFX, the Windows Server Catalog carries an additional qualification to further define the requirements for server-qualified GPUs. These specifications define GPUs configuration requirements and provide VM performance targets. Graphics cards that meet these are typically professional workstation products such as ATI/AMD's FirePro, v5800, v5900, v7800, v7900, v8800, v9800, and Nvidia's Quadro 2000, 3800, 4000, 4800, 5000, 5800, 6000, Quadro FX 2800M and 880M, QuadroPlex 7000 and Tesla M2070Q.
Servers running the RemoteFX vGPU need to accommodate such graphics cards with either larger power supplies and more PCIe slots or alternatively, connect existing servers to an external PCIe expansion chassis.

### Guest OS requirements

The RemoteFX virtual graphics adapter is only supported by Enterprise editions of Windows, starting from Windows 7 SP1. Other editions are missing the required drivers to use the RemoteFX graphics adapter and will fall back to the default emulated graphics adapter instead.