[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