artist: only render dirty scanlines on the display surface
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>
This commit is contained in:
parent
ada804eb89
commit
1f11051619
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user