coreboot-kgpe-d16/payloads/libpayload/drivers
Hung-Te Lin d04b388381 libpayload: cbgfx: Support buffered I/O
For payloads with UI based on CBGFX, they usually start by calling
clear_canvas or clear_screen and then draw the UI elements. However,
that makes the screen flicker.

A typical solution is to identify and minimize the area to redraw.
However for payloads with complicated UI and do not care about latency,
an alternative is to enable buffered I/O.

The new enable_graphics_buffer() will redirect all graphics I/O
into an invisible working buffer. To flush (redraw) the buffer to the
real screen, call flush_graphics_buffer(). To stop buffering, call
disable_graphics_buffer().

BUG=None
TEST=Add the enable, flush and disable calls to payload 'depthcharge',
     built a firmware and boots into Chrome OS recover UI. No more
     flickering. The average rendering time on x86 platform is 1.2ms.

Change-Id: Id60a2824fd9e164feae16b92b68b003beabea8d3
Signed-off-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/44654
Reviewed-by: Julius Werner <jwerner@chromium.org>
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2020-08-28 21:40:58 +00:00
..
i8042 treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
serial libpayload: Cache physical location of serial-console struct 2020-08-24 09:13:09 +00:00
storage treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
timer treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
udc treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
usb payloads/libpayload/drivers/usb/usb.c: Remove whitespace before tab 2020-07-25 01:25:25 +00:00
video libpayload: cbgfx: Support buffered I/O 2020-08-28 21:40:58 +00:00
Makefile.inc treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
cbmem_console.c libpayload: Cache physical cbmem console address 2020-08-24 09:12:47 +00:00
hid.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
mouse_cursor.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
nvram.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
options.c libpayload: Cache physical CMOS option table location 2020-08-24 09:12:56 +00:00
pci.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
speaker.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00