[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RfC] using pixman in qemu for raster ops
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [RfC] using pixman in qemu for raster ops |
Date: |
Tue, 25 Sep 2012 10:47:26 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:10.0.7) Gecko/20120825 Thunderbird/10.0.7 |
Hi,
While working with the pixman library in the fbdev branch and discussing
patches with Stefano Stabellini I came to the conclusion that it would
be a good idea to:
(a) use the pixman library not just as vehicle in fbdev,
but as core service for all raster ops in qemu.
(b) do a major cleanup / revamp of the console system in qemu.
That implies pixman will join zlib and glib as hard dependency, i.e.
qemu will stop building without pixman.
What is pixman?
As the name implies it is a library for pixel rendering ops. It is
portable. It's used by Xorg, cairo and spice. On any recent linux
distro you'll find it already installed. When you compile qemu with
spice you'll have a indirect dependency on pixman. Merging anthonys
gtk/cairo patches will add another indirect dependency.
Even though pixman is used by core linux packages it is still a young
project. On older distros (RHEL-5 for example) it isn't included and
must be compiled manually.
What is the console revamp plan?
(1) Drop DisplayAllocator. Make DisplayChangeListeners support all
important formats directly instead (using pixman), then make gfx
card emulation use qemu_create_displaysurface_from() to give
DisplayChangeListeners direct access to the guests framebuffer.
(2) Replace DisplaySurface with pixman_image_t. Gives us reference
counting for free, which simplifies thread usage in ui/ rendering
code. Also makes it easier to use pixman in ui/ code.
(3) Assign a pixman_image_t to each qemu console. No more redrawing
needed on console switching. vga_hw_invalidate() can be dropped,
screendump code can be simplified.
(4) API fixes. DisplayChangeListeners don't get a opaque pointer (or
pointer to struct DisplayChangeListener for container_of usage)
for example.
(5) Investigate optimizations. Such as passing pixman regions to
DisplayChangeListensers, so they get all updates in one go instead
of being called for each rectangle individually.
Comments?
cheers,
Gerd
- [Qemu-devel] [RfC] using pixman in qemu for raster ops,
Gerd Hoffmann <=
Re: [Qemu-devel] [RfC] using pixman in qemu for raster ops, Paolo Bonzini, 2012/09/25
Re: [Qemu-devel] [RfC] using pixman in qemu for raster ops, Søren Sandmann, 2012/09/25