|
From: | Anthony Liguori |
Subject: | Re: [Qemu-devel] [PATCH] Reducing X communication bandwidth, take 2 |
Date: | Fri, 16 Mar 2007 16:09:14 -0500 |
User-agent: | Thunderbird 1.5.0.10 (X11/20070306) |
Julian Seward wrote:
On Friday 16 March 2007 18:40, Anthony Liguori wrote:Hi Julian, Julian Seward wrote:Here is a somewhat revised version of a patch I first made nearly three years ago. The original thread is http://lists.gnu.org/archive/html/qemu-devel/2004-07/msg00263.html It still uses a shadow frame buffer. Fabrice mentioned this is not necessaryI thought about this a little and here's what I came up with. I think we could change vga_draw_line* so that as part of the drawing process, it compared the newly generated pixel with the previous pixel value and returned back the min, max x-coordinate that changed. Since we tend to only extend the vertical dirty range by a couple pixels, this should be a relatively cheap way of reducing the size of the update region.Sounds plausible - having said that, I have no familiarity with the VGA code. Also sounds like a cleaner solution than mine. Is there something which guarantees that the vertical dirty range only overshoots by some small number of pixels?
Even at a relatively low resolution (640 x 480 @ 16 bit), a page will span only three rows so one dirty page cannot dirty more than 5 vertical pixels.
(thinking more about it .. it doesn't matter - finding min/max that changed for each line will also make it possible to identify the vertical limits of the change).
This is also true.
Will this work also for the CL542x adaptor? (Does that fall in the categoryof vga?) My current hack works for with/without -std-vga and I think that's because it lives "underneath" both, in the connection to SDL.
Each adapter will have to do it's own minimization but that's sort of the write thing anyway IMHO. How granular each update is really only depends on the adapter. For instance, the VMware adapter really shouldn't need to do any minimization at all.
Regards, Anthony Liguori
J
[Prev in Thread] | Current Thread | [Next in Thread] |