The memory_region_set_dirty used to mark changes should use stride value in vram which is normally only the same as surface_stride in 32 bit modes. This caused missed updates in 8 and 16 bit modes.
Signed-off-by: BALATON Zoltan <[email protected]> --- hw/display/ati_2d.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/display/ati_2d.c b/hw/display/ati_2d.c index cf2d4a08e2..a1224bbc9f 100644 --- a/hw/display/ati_2d.c +++ b/hw/display/ati_2d.c @@ -78,8 +78,8 @@ static void ati_set_dirty(VGACommonState *vga, const ATI2DCtx *ctx) vga->vbe_regs[VBE_DISPI_INDEX_YRES] * vga->vbe_line_offset) { memory_region_set_dirty(&vga->vram, vga->vbe_start_addr + ctx->dst_offset + - ctx->dst.y * surface_stride(ds), - ctx->dst.height * surface_stride(ds)); + ctx->dst.y * ctx->dst_stride, + ctx->dst.height * ctx->dst_stride); } } -- 2.41.3
