diff options
author | Hung-Te Lin <hungte@chromium.org> | 2020-08-17 16:22:21 +0800 |
---|---|---|
committer | Julius Werner <jwerner@chromium.org> | 2020-08-28 21:40:58 +0000 |
commit | d04b3883815e898ebd81dd426437964f87cfd6af (patch) | |
tree | 6ae2163590ed98b0ba7539d5e32651cdd7b1bd20 /src | |
parent | 6d7996439f71feb1ed041f0d6bcc809c585a7cfd (diff) |
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>
Diffstat (limited to 'src')
0 files changed, 0 insertions, 0 deletions