[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] Fix spurious VGA updates
From: |
Samuel Thibault |
Subject: |
[Qemu-devel] [PATCH] Fix spurious VGA updates |
Date: |
Mon, 28 Apr 2008 11:32:49 +0100 |
User-agent: |
Mutt/1.5.12-2006-07-14 |
Hello,
VGA used to use
bwidth = width * 4;
to detect how much memory it should check for dirtyness for each line to
be updated. This is however only valid in 32bit modes. The patch below
fixes that by using the exact number of bytes.
Index: hw/vga.c
===================================================================
--- hw/vga.c (révision 4276)
+++ hw/vga.c (copie de travail)
@@ -1418,7 +1418,7 @@
static void vga_draw_graphic(VGAState *s, int full_update)
{
int y1, y, update, page_min, page_max, linesize, y_start, double_scan,
mask;
- int width, height, shift_control, line_offset, page0, page1, bwidth;
+ int width, height, shift_control, line_offset, page0, page1, bwidth, bits;
int disp_width, multi_scan, multi_run;
uint8_t *d;
uint32_t v, addr1, addr;
@@ -1451,16 +1451,20 @@
if (s->sr[0x01] & 8) {
v = VGA_DRAW_LINE4D2;
disp_width <<= 1;
+ bits = 2;
} else {
v = VGA_DRAW_LINE4;
+ bits = 4;
}
} else if (shift_control == 1) {
full_update |= update_palette16(s);
if (s->sr[0x01] & 8) {
v = VGA_DRAW_LINE2D2;
disp_width <<= 1;
+ bits = 2;
} else {
v = VGA_DRAW_LINE2;
+ bits = 4;
}
} else {
switch(s->get_bpp(s)) {
@@ -1468,22 +1472,28 @@
case 0:
full_update |= update_palette256(s);
v = VGA_DRAW_LINE8D2;
+ bits = 4;
break;
case 8:
full_update |= update_palette256(s);
v = VGA_DRAW_LINE8;
+ bits = 8;
break;
case 15:
v = VGA_DRAW_LINE15;
+ bits = 16;
break;
case 16:
v = VGA_DRAW_LINE16;
+ bits = 16;
break;
case 24:
v = VGA_DRAW_LINE24;
+ bits = 24;
break;
case 32:
v = VGA_DRAW_LINE32;
+ bits = 32;
break;
}
}
@@ -1507,7 +1517,7 @@
width, height, v, line_offset, s->cr[9], s->cr[0x17],
s->line_compare, s->sr[0x01]);
#endif
addr1 = (s->start_addr * 4);
- bwidth = width * 4;
+ bwidth = (width * bits + 7) / 8;
y_start = -1;
page_min = 0x7fffffff;
page_max = -1;
- [Qemu-devel] [PATCH] Fix spurious VGA updates,
Samuel Thibault <=