display: add memory_region_sync_dirty_bitmap calls

These are strictly speaking only needed for KVM and Xen, but it's still
nice to be consistent.

Reviewed-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2015-04-22 13:12:40 +02:00
parent 74259ae55b
commit 5299c0f2cf
4 changed files with 5 additions and 0 deletions

View File

@ -106,6 +106,7 @@ static void cg3_update_display(void *opaque)
pix = memory_region_get_ram_ptr(&s->vram_mem); pix = memory_region_get_ram_ptr(&s->vram_mem);
data = (uint32_t *)surface_data(surface); data = (uint32_t *)surface_data(surface);
memory_region_sync_dirty_bitmap(&s->vram_mem);
for (y = 0; y < height; y++) { for (y = 0; y < height; y++) {
int update = s->full_update; int update = s->full_update;

View File

@ -260,6 +260,7 @@ static void g364fb_update_display(void *opaque)
qemu_console_resize(s->con, s->width, s->height); qemu_console_resize(s->con, s->width, s->height);
} }
memory_region_sync_dirty_bitmap(&s->mem_vram);
if (s->ctla & CTLA_FORCE_BLANK) { if (s->ctla & CTLA_FORCE_BLANK) {
g364fb_draw_blank(s); g364fb_draw_blank(s);
} else if (s->depth == 8) { } else if (s->depth == 8) {

View File

@ -1322,6 +1322,7 @@ static void sm501_draw_crt(SM501State * s)
} }
/* draw each line according to conditions */ /* draw each line according to conditions */
memory_region_sync_dirty_bitmap(&s->local_mem_region);
for (y = 0; y < height; y++) { for (y = 0; y < height; y++) {
int update_hwc = draw_hwc_line ? within_hwc_y_range(s, y, 1) : 0; int update_hwc = draw_hwc_line ? within_hwc_y_range(s, y, 1) : 0;
int update = full_update || update_hwc; int update = full_update || update_hwc;

View File

@ -353,6 +353,7 @@ static void tcx_update_display(void *opaque)
return; return;
} }
memory_region_sync_dirty_bitmap(&ts->vram_mem);
for (y = 0; y < ts->height; page += TARGET_PAGE_SIZE) { for (y = 0; y < ts->height; page += TARGET_PAGE_SIZE) {
if (memory_region_get_dirty(&ts->vram_mem, page, TARGET_PAGE_SIZE, if (memory_region_get_dirty(&ts->vram_mem, page, TARGET_PAGE_SIZE,
DIRTY_MEMORY_VGA)) { DIRTY_MEMORY_VGA)) {
@ -446,6 +447,7 @@ static void tcx24_update_display(void *opaque)
dd = surface_stride(surface); dd = surface_stride(surface);
ds = 1024; ds = 1024;
memory_region_sync_dirty_bitmap(&ts->vram_mem);
for (y = 0; y < ts->height; page += TARGET_PAGE_SIZE, for (y = 0; y < ts->height; page += TARGET_PAGE_SIZE,
page24 += TARGET_PAGE_SIZE, cpage += TARGET_PAGE_SIZE) { page24 += TARGET_PAGE_SIZE, cpage += TARGET_PAGE_SIZE) {
if (tcx24_check_dirty(ts, page, page24, cpage)) { if (tcx24_check_dirty(ts, page, page24, cpage)) {