mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
console: stop using PixelFormat
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. [ xenfb added by Benjamin Herrenschmidt ] Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
56bd9ea1a3
commit
30f1e661b6
8 changed files with 42 additions and 45 deletions
|
@ -116,13 +116,14 @@ static void qxl_render_update_area_unlocked(PCIQXLDevice *qxl)
|
|||
qxl->guest_primary.bytes_pp,
|
||||
qxl->guest_primary.bits_pp);
|
||||
if (qxl->guest_primary.qxl_stride > 0) {
|
||||
pixman_format_code_t format =
|
||||
qemu_default_pixman_format(qxl->guest_primary.bits_pp, true);
|
||||
surface = qemu_create_displaysurface_from
|
||||
(qxl->guest_primary.surface.width,
|
||||
qxl->guest_primary.surface.height,
|
||||
qxl->guest_primary.bits_pp,
|
||||
format,
|
||||
qxl->guest_primary.abs_stride,
|
||||
qxl->guest_primary.data,
|
||||
false);
|
||||
qxl->guest_primary.data);
|
||||
} else {
|
||||
surface = qemu_create_displaysurface
|
||||
(qxl->guest_primary.surface.width,
|
||||
|
|
|
@ -1689,9 +1689,11 @@ static void vga_draw_graphic(VGACommonState *s, int full_update)
|
|||
height != s->last_height ||
|
||||
s->last_depth != depth) {
|
||||
if (depth == 32 || (depth == 16 && !byteswap)) {
|
||||
pixman_format_code_t format =
|
||||
qemu_default_pixman_format(depth, !byteswap);
|
||||
surface = qemu_create_displaysurface_from(disp_width,
|
||||
height, depth, s->line_offset,
|
||||
s->vram_ptr + (s->start_addr * 4), byteswap);
|
||||
height, format, s->line_offset,
|
||||
s->vram_ptr + (s->start_addr * 4));
|
||||
dpy_gfx_replace_surface(s->con, surface);
|
||||
} else {
|
||||
qemu_console_resize(s->con, disp_width, height);
|
||||
|
@ -1707,9 +1709,11 @@ static void vga_draw_graphic(VGACommonState *s, int full_update)
|
|||
} else if (is_buffer_shared(surface) &&
|
||||
(full_update || surface_data(surface) != s->vram_ptr
|
||||
+ (s->start_addr * 4))) {
|
||||
pixman_format_code_t format =
|
||||
qemu_default_pixman_format(depth, !byteswap);
|
||||
surface = qemu_create_displaysurface_from(disp_width,
|
||||
height, depth, s->line_offset,
|
||||
s->vram_ptr + (s->start_addr * 4), byteswap);
|
||||
height, format, s->line_offset,
|
||||
s->vram_ptr + (s->start_addr * 4));
|
||||
dpy_gfx_replace_surface(s->con, surface);
|
||||
}
|
||||
|
||||
|
|
|
@ -1052,10 +1052,12 @@ static inline void vmsvga_check_size(struct vmsvga_state_s *s)
|
|||
s->new_height != surface_height(surface) ||
|
||||
s->new_depth != surface_bits_per_pixel(surface)) {
|
||||
int stride = (s->new_depth * s->new_width) / 8;
|
||||
pixman_format_code_t format =
|
||||
qemu_default_pixman_format(s->new_depth, true);
|
||||
trace_vmware_setmode(s->new_width, s->new_height, s->new_depth);
|
||||
surface = qemu_create_displaysurface_from(s->new_width, s->new_height,
|
||||
s->new_depth, stride,
|
||||
s->vga.vram_ptr, false);
|
||||
format, stride,
|
||||
s->vga.vram_ptr);
|
||||
dpy_gfx_replace_surface(s->vga.con, surface);
|
||||
s->invalidated = 1;
|
||||
}
|
||||
|
|
|
@ -713,15 +713,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 */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue