Re: [Xen-devel] Re: [PATCH 2/2] Virtual frame buffer: user space backend
On 7/7/06, Anthony Liguori <anthony@xxxxxxxxxxxxx> wrote:
On Fri, 07 Jul 2006 17:57:52 +0100, Christian Limpach wrote:
> On 6/26/06, Markus Armbruster <armbru@xxxxxxxxxx> wrote:
>> Straightforward conversion to Xenstore.
>> Applies to hg repository at http://hg.codemonkey.ws/vncfb
> Ideally, we'd move qemu's vnc support into a library to make it reusable.
I had considered this. It's a little awkward since b/c of the dependence
on QEMU's async IO routines but it wouldn't be that bad.
At this point, it probably makes most sense to communicate the linear
offsets within the framebuffer that are dirty instead of computing a rect.
Since the QEMU VNC code already does rectangle finding and maintains
dirty tile bitmap, we don't really have to attempt to find the rect in
the frontend at all.
Well, I can only guess what you were thinking when you wrote the
framebuffer code, but isn't the current code merging updates to a
single update at the configured framerate and aren't you doing that to
avoid flooding the ring? And if that's the case, wouldn't
communicating the linear offsets have the same problems?
We think that having a dirty bitmap as part of the frontend/backend
protocol would be a good thing and are planning to use the same
protocol with dirty bit scanning in the pagetables mapping the video
ram of HVM guests. It would work like this:
- have a page with two dirty bitmaps, each 64bit by 128 plus and
indicator which bitmap is the active bitmap from the frontends point
-  frontend records dirty information in the active bitmap
- timer or external event causes backend to check if the indicator has changed
- if not, then it either synchronously requests the frontend to switch
bitmap or waits some more
- backend then scans/clears the inactive bitmap
- backend requests frontend to set a timer a few ms before the next
time the backend wants to scan a bitmap
- when the frontend's timer fires, frontend switches bitmap and
updates the indicator
- go back to 
This allows the backend to control the rate at which it wants to scan
the bitmap without having to synchronously ask the frontend to flush
the bitmap it is updating.
We tile the screen in upto 64 vertical strips and upto 128 horizontal
strips. We could move the indicator outside of this page and get
finer grained updates.
Xen-devel mailing list