On Wed, 2014-06-18 at 14:23 +0200, Gerd Hoffmann wrote: > With this patch the qemu console core stops using PixelFormat and pixman > format codes side-by-side, pixman format code is the primary way to > specify the DisplaySurface format: > > * DisplaySurface stops carrying a PixelFormat field. > * qemu_create_displaysurface_from() expects a pixman format now. > > Functions to convert PixelFormat to pixman_format_code_t (and back) > exist for those who still use PixelFormat. As PixelFormat allows > easy access to masks and shifts it will probably continue to exist.
Finally got to start playing with that stuff (got busy with other things for a while) and untangling vga.c (remove whole chunks of it actually since we know the target is always 32bpp when we need to convert or "draw" so it's a lot easier). While at it, I noticed this patch is missing this, feel free to fold in no need to add an ack or anything, it's trivial: diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c index 032eb7a..f9cdd96 100644 --- a/hw/display/xenfb.c +++ b/hw/display/xenfb.c @@ -711,15 +711,17 @@ static void xenfb_update(void *opaque) /* resize if needed */ if (xenfb->do_resize) { + pixman_format_code_t format; + xenfb->do_resize = 0; switch (xenfb->depth) { case 16: case 32: /* console.c supported depth -> buffer can be used directly */ + format = qemu_default_pixman_format(xenfb->depth, true); surface = qemu_create_displaysurface_from - (xenfb->width, xenfb->height, xenfb->depth, - xenfb->row_stride, xenfb->pixels + xenfb->offset, - false); + (xenfb->width, xenfb->height, format, + xenfb->row_stride, xenfb->pixels + xenfb->offset); break; default: /* we must convert stuff */