From: Gerd Hoffmann <kraxel@redhat.com>
To: "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: [Qemu-devel] [RfC] using pixman in qemu for raster ops
Date: Tue, 25 Sep 2012 10:47:26 +0200 [thread overview]
Message-ID: <50616F9E.5000501@redhat.com> (raw)
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
next reply other threads:[~2012-09-25 8:47 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-25 8:47 Gerd Hoffmann [this message]
2012-09-25 9:31 ` [Qemu-devel] [RfC] using pixman in qemu for raster ops Peter Maydell
2012-09-25 10:37 ` Gerd Hoffmann
2012-09-25 10:48 ` Peter Maydell
2012-09-25 11:00 ` Gerd Hoffmann
2012-09-25 21:18 ` Anthony Liguori
2012-09-25 14:32 ` Paolo Bonzini
2012-09-25 14:57 ` Peter Maydell
2012-09-25 14:57 ` Paolo Bonzini
2012-09-25 15:31 ` Søren Sandmann
2012-09-25 15:43 ` Gerd Hoffmann
2012-09-25 16:02 ` Søren Sandmann
2012-09-25 16:20 ` Markus Armbruster
2012-09-25 17:08 ` Søren Sandmann
2012-09-26 5:58 ` Gerd Hoffmann
2012-09-25 10:32 ` Stefano Stabellini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50616F9E.5000501@redhat.com \
--to=kraxel@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefano.stabellini@eu.citrix.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).