[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 53/53] artist: only render dirty scanlines on the display surface
From: |
Mark Cave-Ayland |
Subject: |
[PULL 53/53] artist: only render dirty scanlines on the display surface |
Date: |
Sun, 8 May 2022 20:56:50 +0100 |
The framebuffer_update_display() function returns the dirty scanlines that were
touched since the last display update, however artist_update_display() always
calls
dpy_gfx_update() with start and end scanlines of 0 and s->height causing the
entire display surface to be rendered on every update.
Update artist_update_display() so that dpy_gfx_update() only renders the dirty
scanlines on the display surface, bypassing the display surface rendering
completely if framebuffer_update_display() indicates no changes occurred.
This noticeably improves boot performance when the framebuffer is enabled on my
rather modest laptop here, including making the GTK UI usable.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-Id: <20220504153708.10352-4-mark.cave-ayland@ilande.co.uk>
Reviewed-by: Helge Deller <deller@gmx.de>
Reviewed-by: Sven Schnelle <svens@stackframe.org>
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
hw/display/artist.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/hw/display/artist.c b/hw/display/artist.c
index 4a9f7b5e59..39fc0c4ca5 100644
--- a/hw/display/artist.c
+++ b/hw/display/artist.c
@@ -1243,7 +1243,9 @@ static void artist_update_display(void *opaque)
artist_draw_cursor(s);
- dpy_gfx_update(s->con, 0, 0, s->width, s->height);
+ if (first >= 0) {
+ dpy_gfx_update(s->con, 0, first, s->width, last - first + 1);
+ }
}
static void artist_invalidate(void *opaque)
--
2.20.1
- [PULL 40/53] lasi: use numerical constant for iar reset value, (continued)
- [PULL 40/53] lasi: use numerical constant for iar reset value, Mark Cave-Ayland, 2022/05/08
- [PULL 43/53] hppa: move hppa_pci_ignore_ops from pci.c to machine.c, Mark Cave-Ayland, 2022/05/08
- [PULL 44/53] hppa: remove hw/hppa/pci.c, Mark Cave-Ayland, 2022/05/08
- [PULL 45/53] hppa: remove unused trace-events from from hw/hppa, Mark Cave-Ayland, 2022/05/08
- [PULL 46/53] hppa: move enable_lan() define from hppa_sys.h to machine.c, Mark Cave-Ayland, 2022/05/08
- [PULL 47/53] hppa: remove the empty hppa_sys.h file, Mark Cave-Ayland, 2022/05/08
- [PULL 48/53] hppa: use MACHINE QOM macros for defining the hppa machine, Mark Cave-Ayland, 2022/05/08
- [PULL 49/53] hppa: fold machine_hppa_machine_init() into machine_hppa_machine_init_class_init(), Mark Cave-Ayland, 2022/05/08
- [PULL 51/53] artist: checkpatch and newline style fixes, Mark Cave-Ayland, 2022/05/08
- [PULL 50/53] hppa: simplify machine function names in machine.c, Mark Cave-Ayland, 2022/05/08
- [PULL 53/53] artist: only render dirty scanlines on the display surface,
Mark Cave-Ayland <=
- [PULL 52/53] artist: remove unused ROP8OFF() macro, Mark Cave-Ayland, 2022/05/08
- Re: [PULL 00/53] qemu-sparc queue 20220508, Richard Henderson, 2022/05/08