mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 08:43:55 -06:00
fix endianness problem sharing the videoram buffer
[ The following text is in the "UTF-8" character set. ] [ Your display is set for the "koi8-r" character set. ] [ Some characters may be displayed incorrectly. ] This patch fixes vga rendering when the guest endianness differs from the host endianness: in this case we can only share the buffer if the bpp is 32 and we must change the pixelformat accordingly. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6413 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
1a6f0dbcc0
commit
0da2ea1b37
3 changed files with 63 additions and 12 deletions
7
hw/vga.c
7
hw/vga.c
|
@ -1623,12 +1623,19 @@ static void vga_draw_graphic(VGAState *s, int full_update)
|
|||
disp_width != s->last_width ||
|
||||
height != s->last_height ||
|
||||
s->last_depth != depth) {
|
||||
#if defined(WORDS_BIGENDIAN) == defined(TARGET_WORDS_BIGENDIAN)
|
||||
if (depth == 16 || depth == 32) {
|
||||
#else
|
||||
if (depth == 32) {
|
||||
#endif
|
||||
if (is_graphic_console()) {
|
||||
qemu_free_displaysurface(s->ds->surface);
|
||||
s->ds->surface = qemu_create_displaysurface_from(disp_width, height, depth,
|
||||
s->line_offset,
|
||||
s->vram_ptr + (s->start_addr * 4));
|
||||
#if defined(WORDS_BIGENDIAN) != defined(TARGET_WORDS_BIGENDIAN)
|
||||
s->ds->surface->pf = qemu_different_endianness_pixelformat(depth);
|
||||
#endif
|
||||
dpy_resize(s->ds);
|
||||
} else {
|
||||
qemu_console_resize(s->ds, disp_width, height);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue