[RESEND PATCH v3 00/26] x86: video: Speed up the framebuffer
Bin Meng
bmeng.cn at gmail.com
Tue Jul 7 08:43:32 CEST 2020
On Fri, Jul 3, 2020 at 11:12 AM Simon Glass <sjg at chromium.org> wrote:
>
> (resent for Bin, rebased to u-boot/next)
>
> Some architectures use a cached framebuffer and flush the cache as needed
> so that changes are visible. This is supported by U-Boot.
>
> However x86 uses an uncached framebuffer with a 'write-combining' feature
> to speed up writes. Reads are permitted but they are extremely expensive.
>
> Unfortunately, reading from the frame buffer is quite common, e.g. to
> scroll it. This makes scrolling very slow.
>
> This series adds a new feature which supports copying modified parts of
> the frame buffer to the uncached hardware buffer. This speeds up scrolling
> dramatically on x86 so the extra complexity cost seems worth it.
>
> In an extreme case, the time to print the environment on minnowboard with
> 1280x1024 and CONFIG_CONSOLE_SCROLL_LINES disabled is reduced
> significantly, from 13 seconds to 300ms.
>
> Changes in v3:
> - Drop unnecessary variable
>
> Changes in v2:
> - Simplify return sequence in vidconsole_memmove() since there is no logging
>
> Simon Glass (26):
> x86: fsp: Reinit the FPU after FSP meminit
> console: Add a way to output to serial only
> video: Show an error when a vidconsole function fails
> sandbox: video: Allow selection of rotated console
> video: Split out expression parts into variables
> video: Adjust rotated console to start at right edge
> video: Drop unnecessary #ifdef around vid_console_color()
> video: Add a comment for struct video_uc_platdata
> video: Add support for copying to a hardware framebuffer
> video: Set up the copy framebuffer when enabled
> video: Clear the copy framebuffer when clearing the screen
> video: Add helpers for vidconsole for the copy framebuffer
> video: Update normal console to support copy buffer
> video: Update truetype console to support copy buffer
> video: Update rotated console to support copy buffer
> video: Update the copy framebuffer when writing bitmaps
> video: Add comments to struct sandbox_sdl_plat
> video: sandbox: Add support for the copy framebuffer
> video: pci: Set up the copy framebuffer
> x86: fsp: video: Allocate a frame buffer when needed
> video: Correctly handle multiple framebuffers
> x86: video: Support copy framebuffer with probed devices
> chromebook_samus: Enable the copy framebuffer
> chromebook_link: Enable the copy framebuffer
> minnowmax: Enable the copy framebuffer
> x86: minnowmax: Drop screen resolution to 1024x768
>
> arch/x86/cpu/i386/cpu.c | 5 ++
> arch/x86/include/asm/u-boot-x86.h | 8 +++
> arch/x86/lib/fsp/fsp_graphics.c | 12 ++++
> arch/x86/lib/fsp2/fsp_meminit.c | 1 +
> common/console.c | 28 ++++++--
> configs/chromebook_link_defconfig | 2 +-
> configs/chromebook_samus_defconfig | 2 +-
> configs/minnowmax_defconfig | 4 +-
> configs/sandbox_defconfig | 1 +
> drivers/pci/pci_rom.c | 22 +++++-
> drivers/video/Kconfig | 31 +++++++++
> drivers/video/broadwell_igd.c | 16 ++++-
> drivers/video/console_normal.c | 26 +++++++-
> drivers/video/console_rotate.c | 103 ++++++++++++++++++++---------
> drivers/video/console_truetype.c | 43 ++++++++----
> drivers/video/ivybridge_igd.c | 26 ++++++--
> drivers/video/sandbox_sdl.c | 10 ++-
> drivers/video/vesa.c | 30 ++++++++-
> drivers/video/vidconsole-uclass.c | 38 ++++++++++-
> drivers/video/video-uclass.c | 93 +++++++++++++++++++++++++-
> drivers/video/video_bmp.c | 16 ++++-
> include/console.h | 13 ++++
> include/dm/test.h | 14 +++-
> include/video.h | 41 ++++++++++++
> include/video_console.h | 51 +++++++++++++-
> test/dm/video.c | 60 ++++++++++-------
> 26 files changed, 594 insertions(+), 102 deletions(-)
>
> --
series applied to u-boot-x86, thanks!
More information about the U-Boot
mailing list