qemu/hw/display
Mark Cave-Ayland 1f11051619 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>
2022-05-08 18:52:37 +01:00
..
artist.c artist: only render dirty scanlines on the display surface 2022-05-08 18:52:37 +01:00
ati_2d.c
ati_dbg.c
ati_int.h
ati_regs.h
ati.c hw/display: Allow vga_common_init() to return errors 2022-03-18 10:15:57 +01:00
bcm2835_fb.c Mark remaining global TypeInfo instances as const 2022-02-21 13:30:20 +00:00
blizzard.c
bochs-display.c
cg3.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
cirrus_vga_internal.h
cirrus_vga_isa.c hw/display: Allow vga_common_init() to return errors 2022-03-18 10:15:57 +01:00
cirrus_vga_rop2.h
cirrus_vga_rop.h
cirrus_vga.c hw/display: Allow vga_common_init() to return errors 2022-03-18 10:15:57 +01:00
dpcd.c
edid-generate.c edid: Fix clock of Detailed Timing Descriptor 2022-03-04 11:31:46 +01:00
edid-region.c
exynos4210_fimd.c
framebuffer.c
framebuffer.h
g364fb.c g364fb: add VMStateDescription for G364SysBusState 2021-07-02 17:35:08 +02:00
i2c-ddc.c Mark remaining global TypeInfo instances as const 2022-02-21 13:30:20 +00:00
jazz_led.c
Kconfig hw/display: Rename VGA_ISA_MM -> VGA_MMIO 2022-01-13 10:58:54 +01:00
macfb.c macfb: set initial value of mode control registers in macfb_common_realize() 2022-03-09 09:29:10 +00:00
meson.build hw/display: Rename VGA_ISA_MM -> VGA_MMIO 2022-01-13 10:58:54 +01:00
next-fb.c Do not include hw/boards.h if it's not really necessary 2021-05-02 17:24:51 +02:00
omap_dss.c exec/exec-all: Move 'qemu/log.h' include in units requiring it 2022-02-21 10:18:06 +01:00
omap_lcdc.c
pl110_template.h Replace config-time define HOST_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
pl110.c hw/display/pl110: Remove use of BITS from pl110_template.h 2021-03-14 13:14:55 +00:00
pxa2xx_lcd.c Replace config-time define HOST_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
qxl-logger.c
qxl-render.c ui/cursor: fix integer overflow in cursor_alloc (CVE-2021-4206) 2022-04-07 12:30:54 +02:00
qxl.c Replace qemu_real_host_page variables with inlined functions 2022-04-06 10:50:38 +02:00
qxl.h Replace GCC_FMT_ATTR with G_GNUC_PRINTF 2022-03-22 14:40:51 +04:00
ramfb-standalone.c
ramfb.c
sii9022.c
sm501.c hw/i2c: Rename i2c_set_slave_address() -> i2c_slave_set_address() 2021-07-08 14:15:01 -05:00
ssd0303.c
ssd0323.c
tc6393xb.c Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
tcx.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
trace-events hw/display/vmware_vga: do not discard screen updates 2022-04-22 11:47:08 +02:00
trace.h
vga_int.h hw/display: Allow vga_common_init() to return errors 2022-03-18 10:15:57 +01:00
vga_regs.h
vga-access.h
vga-helpers.h
vga-isa.c hw/display: Allow vga_common_init() to return errors 2022-03-18 10:15:57 +01:00
vga-mmio.c hw/display: Allow vga_common_init() to return errors 2022-03-18 10:15:57 +01:00
vga-pci.c hw/display: Allow vga_common_init() to return errors 2022-03-18 10:15:57 +01:00
vga.c Replace TARGET_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
vhost-user-gpu-pci.c modules: add virtio-gpu module annotations 2021-07-09 18:20:27 +02:00
vhost-user-gpu.c Revert "virtio: introduce macro IRTIO_CONFIG_IRQ_IDX" 2022-01-10 16:02:54 -05:00
vhost-user-vga.c modules: add virtio-gpu module annotations 2021-07-09 18:20:27 +02:00
virtio-gpu-base.c ui: simplify gl unblock & flush 2021-12-21 10:50:21 +04:00
virtio-gpu-gl.c Replace config-time define HOST_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
virtio-gpu-pci-gl.c modules: add virtio-gpu module annotations 2021-07-09 18:20:27 +02:00
virtio-gpu-pci.c modules: add virtio-gpu module annotations 2021-07-09 18:20:27 +02:00
virtio-gpu-udmabuf-stubs.c virtio-gpu: splitting one extended mode guest fb into n-scanouts 2021-11-05 12:29:19 +01:00
virtio-gpu-udmabuf.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
virtio-gpu-virgl.c virtio-gpu: use VIRTIO_GPU_RESOURCE_FLAG_Y_0_TOP 2021-12-21 10:50:21 +04:00
virtio-gpu.c Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
virtio-vga-gl.c modules: add virtio-gpu module annotations 2021-07-09 18:20:27 +02:00
virtio-vga.c hw/display: Allow vga_common_init() to return errors 2022-03-18 10:15:57 +01:00
virtio-vga.h
vmware_vga.c hw/display/vmware_vga: do not discard screen updates 2022-04-22 11:47:08 +02:00
xenfb.c Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
xlnx_dp.c hw/display/xlnx_dp: fix an out-of-bounds read in xlnx_dp_read 2021-08-31 14:34:36 +02:00