qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [RfC] using pixman in qemu for raster ops
@ 2012-09-25  8:47 Gerd Hoffmann
  2012-09-25  9:31 ` Peter Maydell
  2012-09-25 10:32 ` Stefano Stabellini
  0 siblings, 2 replies; 16+ messages in thread
From: Gerd Hoffmann @ 2012-09-25  8:47 UTC (permalink / raw)
  To: qemu-devel@nongnu.org, Stefano Stabellini

  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

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2012-09-26  5:59 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-25  8:47 [Qemu-devel] [RfC] using pixman in qemu for raster ops Gerd Hoffmann
2012-09-25  9:31 ` 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

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).