[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RfC] using pixman in qemu for raster ops
From: |
Stefano Stabellini |
Subject: |
Re: [Qemu-devel] [RfC] using pixman in qemu for raster ops |
Date: |
Tue, 25 Sep 2012 11:32:41 +0100 |
User-agent: |
Alpine 2.02 (DEB 1266 2009-07-14) |
On Tue, 25 Sep 2012, Gerd Hoffmann wrote:
> 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.
I think that not being in RHEL5 could create lots of problems for many
people. For example most Xen virtualization products I know today are
based on something from the same era as RHEL5.
> 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.
"important formats" should include 24 bpp (repeating here for people
that didn't follow the other discussion)
> (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.
opaque pointers are not always necessary or a must have clean up
> (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?
- Re: [Qemu-devel] [RfC] using pixman in qemu for raster ops, (continued)
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
- Re: [Qemu-devel] [RfC] using pixman in qemu for raster ops, Gerd Hoffmann, 2012/09/25
- Re: [Qemu-devel] [RfC] using pixman in qemu for raster ops, Søren Sandmann, 2012/09/25
- Re: [Qemu-devel] [RfC] using pixman in qemu for raster ops, Markus Armbruster, 2012/09/25
- Re: [Qemu-devel] [RfC] using pixman in qemu for raster ops, Søren Sandmann, 2012/09/25
- Re: [Qemu-devel] [RfC] using pixman in qemu for raster ops, Gerd Hoffmann, 2012/09/26
Re: [Qemu-devel] [RfC] using pixman in qemu for raster ops,
Stefano Stabellini <=