Knowledge Base
Searching in : Article
ID: AR01T01151
Applies to: NoMachine Software
Added on: 2022-01-26
Last Update: 2024-04-22

How rendering of applications is done in NoMachine

A simplified schema of how applications running on the remote host are finally displayed on the user's monitor is:

The rendering performed by the remote applications is always made on the server side (the machine that users are connecting to) regardless of whether it is 3D-accelerated or 2D. Using server side rendering on the GPU (or not) doesn't depend on the GPU capabilities of the client. In other words, the remote applications running on the server can't leverage the GPU of the client device and vice-versa.

Server side rendering is achieved by a mix of video encoding and NoMachine proprietary mechanisms and sent to the client for local rendering on the user's computer. Video encoding can be done on hardware (i.e., the GPU) or using software encoding. Similarly, video decoding, on the computer users are connecting from, can be made on the GPU or through software decoding. Also the rendering made by NoMachine Player can be done on GPU or not.

In practice, NoMachine can leverage the GPU in four cases:

1) 3D accelerated rendering by the remote applications on the server;
2) video encoding on the server;
3) video decoding on the client;
4) 3D accelerated rendering by the NoMachine player on the client.

Note that hardware encoding/decoding requires a hardware accelerated video card (GPU) with Nvidia Kepler microarchitecture onward or Intel Quick Sync processors or AMD card (Windows and Linux).

Hardware/software encoding and decoding can be used independently from each other on the client and server. That means that in some cases you can have hardware encoding on the server side and software decoding on the client side, or software encoding on the server side and hardware decoding on the client side.


Some remarks for connections to the physical desktop and NoMachine Linux virtual desktop sessions


With NoMachine it's possible to connect to the physical display of the remote host or, if Linux, run NoMachine virtual desktops.

Regarding the use of 3D (GPU-accelerated) rendering by remote applications on the server side, we have to distinguish between two cases:

a) connection to the physical display
In this case, rendering is performed on the physical display, and the use of the GPU doesn't depend on NoMachine. The GPU will be used if the system supports it. This applies also to a virtual machine (VM), in this case the GPU is provided by the hypervisor and can be a virtual VM GPU or a VM GPU Passthrough.

b) connections to a NoMachine virtual desktop on Linux
3D rendering is possible by enabling VirtualGL support in NoMachine.


GPU-accelerated video encoding and decoding are always used, where available, when connecting to the physical display. This is the typical case of connections to the Enterprise Desktop or to the free edition of NoMachine.

In NoMachine virtual desktop sessions on Linux (e.g. made with the Workstation or the Terminal Server), GPU-accelerated video encoding and decoding are used when the 'X11 vector graphics mode' is disabled.
See: https://knowledgebase.nomachine.com/AR02L00779 for more information and how to disable it.