RemoteFX Window-Frame and Full-Screen Display Modes (Compact 7)

3/12/2014

You can develop a RemoteFX display driver in window-frame display mode or in full-screen-only display mode. A window-frame display driver shares the display surface with the RDC client session windows and other local applications. A full-screen-only display driver makes board development and prototyping faster and also reduces CPU load at run time.

RemoteFX Window-Frame Display Mode

If you want your application to use window-frame display mode, your driver must be designed to share the display surface with the RDC client session windows and other local applications. The process that is used by RemoteFX hardware-accelerated decoding to offload coprocessor work from the RDC client to the server running Windows Server 2008 R2 follows this sequence:

  1. On initialization, the RDC client gets the hardware capabilities from the display driver by using the ESCAPE_GET_CAPABILITIES escape sequence and then negotiates capabilities with the server. For more information, see ESCAPE_GET_CAPABILITIES Code Example.
  2. At run time, the RDC client receives and parses the RemoteFX tile set data from the server.
  3. The client offloads the encoded tile set data to the display driver for decoding by using the ESCAPE_DEC3 escape sequence. For more information, see ESCAPE_DEC3 Code Example.
  4. The decoder processes the data and outputs the decoded data to the decode buffer.
  5. The RDC client uses the ESCAPE_COPY_2BMP escape sequence to move decoded data from the decode buffer to the shadow surface. Hardware acceleration is recommended to transfer the decoded bitmap to the shadow surface. For more information, see ESCAPE_COPY_2BMP Code Example.
  6. The RDC client presents the shadow bitmap content into the frame buffer, which is then output to the physical display. Hardware-accelerated BitBlt is recommended to transfer the shadow bitmap to the frame buffer.

The following figure shows this process.

Figure 4: Window-Frame Display Mode RemoteFX Hardware Offload Flow Chart

RemoteFX Hardware Offload Flow Chart

RemoteFX Full-Screen Display Mode

In Compact 7, OEMs have the option of implementing full-screen display mode with RemoteFX. A full-screen-only display driver makes board development and prototyping faster and also reduces CPU load at run time because decoded data is written from the decode buffer directly to the frame buffer.

If you want to use full-screen display mode for your application, the process that is used by RemoteFX hardware-accelerated decoding to offload coprocessor work from the RDC client to the server running Windows Server 2008 R2 follows this sequence:

  1. On initialization, the RDC client gets the hardware capabilities from the display driver by using the ESCAPE_GET_CAPABILITIES escape sequence and then negotiates capabilities with the server.
  2. At run time, the RDC client receives and parses the RemoteFX tile set data from the server.
  3. The RDC client offloads the encoded tile set data to the display driver for decoding by using the ESCAPE_DEC3 escape sequence.
  4. The decoder processes the data and outputs the decoded data to the decode buffer.
  5. The display driver moves the decoded data from the decode buffer to the frame buffer.

The following figure shows this process.

Figure 5: Full-Screen Display Mode RemoteFX Hardware Offload Flow Chart

Full Screen RemoteFX Hardware Offload Flow Chart

You enable full-screen display mode by setting the FullScreenRFXOnly registry key on the device. To enable RemoteFX full-screen display mode, create a registry entry in the Rdp.reg file, as shown in the following example.

[HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client]
"FullScreenRFXOnly"=dword:1

If your RemoteFX implementation uses hardware-accelerated decoding, FullScreenRFXOnly disables the GDI, which is only used for window-frame display mode. The blue connection bar is also hidden.

When FullScreenRFXOnly is enabled, the RDC client does not call the ESCAPE_COPY_2BMP escape sequence, the RDC client does not present any RemoteFX data to the display screen, and it is the responsibility of the display driver to display the decoded RemoteFX data. For more information and for code examples, see Extract Rectangle Information from RemoteFX Display Data.

See Also

Concepts

Implement a RemoteFX Display Driver