* Overview
{anchor: Overview}

TurboVNC is an optimized version of VNC (more specifically, of
[[http://www.tightvnc.com][TightVNC]] 1.3.x.)  On the surface, TurboVNC behaves
similarly to its parent, but TurboVNC has been tuned to provide interactive
performance for full-screen video and 3D workloads.  On these types of
workloads, TurboVNC performs as much as an order of magnitude faster than
TightVNC 1.3.x, uses more than an order of magnitude less CPU time to compress
each frame, and it produces generally better compression ratios.  As with
TightVNC, TurboVNC uses JPEG compression for image tiles with a high number of
unique colors and indexed color encoding for image tiles with a low number of
unique colors.  Part of TurboVNC's speedup comes from the use of libjpeg-turbo,
the same high-speed SIMD-optimized JPEG codec used by VirtualGL.  However,
TurboVNC also bypasses the CPU-hungry smoothness detection routines that
TightVNC uses to determine whether a tile is a good candidate for JPEG
compression.  Furthermore, TurboVNC eliminates buffer copies, it maximizes
network efficiency by using the largest tile sizes supported by the TightVNC
protocol, and it never uses a Zlib compression level higher than 1.  In the
aggregate, TurboVNC compresses 2D application workloads a bit less efficiently
than TightVNC, but it generally does a better job than TightVNC of compressing
3D application workloads.

TurboVNC is the product of extensive research, in which many different
permutations of the TightVNC encoder were benchmarked at the low level against
a variety of captured RFB sessions that simulated real-world application
workloads, both 2D and 3D.  For more information on the research leading to
TurboVNC's image encoding optimizations, see
[[http://www.virtualgl.org/pmwiki/uploads/About/tighttoturbo.pdf][this report]].

In addition, TurboVNC provides the following features:

	* Fine-grained control over the JPEG image quality and the level of
		chrominance subsampling.

	* (Optional) double buffering on the client side to reduce tearing
		artifacts in 3D and video applications.

	* TurboVNC has the ability to hide network latency by decompressing and
		drawing a frame on the client while the next frame is being fetched from
		the server.  This can improve performance dramatically on high-latency
		connections.

	* TurboVNC supports authentication with one-time passwords or Unix login
		credentials.

	* TurboVNC provides a "lossless refresh" feature, which sends a
		mathematically lossless copy of the current screen image.  This is useful
		in situations in which image quality is critical but the network is too
		slow to support sending a high-quality image for every frame.  Lossless
		refreshes can be performed manually when a certain hotkey is pressed, or
		the TurboVNC Server can be configured to send a lossless refresh
		automatically if the user stops interacting with the application for a
		certain period of time.

	* TurboVNC is fully supported on Solaris platforms (client and server) and on
		Intel-based Macs (client only.)

TurboVNC, when used with VirtualGL, provides a highly performant and robust
solution for remotely displaying 3D applications over all types of networks.

TurboVNC is capable of sending 30+ Megapixels/second of image data over a
100 Megabit/second local area network with perceptually lossless image quality.
TurboVNC can deliver between 10 and 12 Megapixels/second of image data over a 5
Megabit/second broadband connection at reduced (but usable) image quality.

TurboVNC is compatible with other VNC distributions.  See
{ref prefix="Chapter ": Compatibility} for more information.  TurboVNC can be
installed onto the same system as other VNC distributions without interference.
