On 02/14/2012 11:24 AM, Gerd Hoffmann wrote:
   Hi,

I can do it, by retrieving the surfaces addresses from the tracked guest
commands.

Exactly.

However, if we already do it, it would be even better if we
just dirty only the areas that are actually modified by the update_area
calls. The problem is that (1) spice-server updates surfaces also
without request from driver.

On worker->stop() for example, which renderes all outstanding commands
so all state is flushed to the surfaces (and thereby device memory).
This is done on vm_stop too, so I wouldn't be surprised if most surfaces
are dirtied anyway at this point.  Getting notifications about
spice-server touching surfaces doesn't buy us much then.
We also render drawables that are not hidden by other ones, when we lack free memory in the driver. In addition inter-surfaces dependencies are handled in a brute-force manner by rendering old drawables (I plan to improve this). But anyway, as I mentioned it the preceding email, since most of the surfaces are destroyed (at least with the current drivers), I prefer not to dirty them "live". So I'll make the change you originally suggested.

Regards,
Yonit.


cheers,
   Gerd



Reply via email to