[Spice-devel] how to let spice-server send all the rendering work to the client side

Marc-André Lureau mlureau at redhat.com
Tue May 6 03:11:56 PDT 2014


Hi

----- Original Message -----
> Hi all,
> 
> During the past days, I was dedicated to build, configure the spice source
> code to achieve the desired performance. But several questions, or you can
> call them suggestions, occurred to me when the remote desktop did as they
> were expected.
> 
> spice is claimed to be able to "intelligently assess the system resources
> available on the user's client device versus the host  virtualization
> server. And as a result of this assessment, the protocol dynamically decides
> whether to render the desktop application on the client device or the host
> server". Here comes my question, could we  disable this "dynamic" part, cut
> off the other alternative option which is doing the rendering work on server
> side and sending client the image using some kind of compression algorithm,
> just always send client those qxl commands, because I was always furnished
> with such a powerful client that I can deal with all kinds of graphic
> commands on the client side.
> 
> If my assumption can be achieved, then the client is not very much so "thin".
> But I don't care, I just want spice server to send client the graphic
> command every time, then network overload can be reduced, massively, maybe.
> 
> If I want to get what I want, how do I modify the source code? Are there some
> if ... else ... or switch sentences to choose which side to do the rendering
> work? At this time, I am submerged in the source code overview, but there is
> nothing exciting to be found.
> 

This is not as simple as it may seem. The server code has to render the display for the host.

The server has logic to do so lazily, some commands may not be render (overlapping regions etc)

In general, all the commands are sent to the client, until the client "pipe" exceeds some limits
due to slower network. In this case, the server starts to render partially 
for the client to reduce bandwidth, the number of commands, and keep latency low enough.

But if you have fast enough network (or on localhost), mostly, all the rendering will be
done on client side already.


More information about the Spice-devel mailing list