diff options
author | Simon Glass <sjg@chromium.org> | 2020-07-02 21:12:20 -0600 |
---|---|---|
committer | Bin Meng <bmeng.cn@gmail.com> | 2020-07-09 12:33:24 +0800 |
commit | 9beac5daf700bdee407f095586129d5622ead407 (patch) | |
tree | a0f72ea5cb5f898c2327e7100270026765e6420c /drivers/video/Kconfig | |
parent | 5a6cea37c672a6579338b60e74965210c785c0f3 (diff) |
video: Add support for copying to a hardware framebuffer
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.
Add a new feature which supports copying modified parts of the frame
buffer to the uncached hardware buffer. This speeds up scrolling by at
least 10x on x86 so the extra complexity cost seems worth it.
As a starting point, add the Kconfig, update the video structures to keep
track of the buffer and add a function to do the copy.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Anatolij Gustschin <agust@denx.de>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'drivers/video/Kconfig')
-rw-r--r-- | drivers/video/Kconfig | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 0cf13adc7d..366e9ab465 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -22,6 +22,18 @@ config BACKLIGHT This provides backlight uclass driver that enables basic panel backlight support. +config VIDEO_COPY + bool "Enable copying the frame buffer to a hardware copy" + depends on DM_VIDEO + help + On some machines (e.g. x86), reading from the frame buffer is very + slow because it is uncached. To improve performance, this feature + allows the frame buffer to be kept in cached memory (allocated by + U-Boot) and then copied to the hardware frame-buffer as needed. + + To use this, your video driver must set @copy_base in + struct video_uc_platdata. + config BACKLIGHT_PWM bool "Generic PWM based Backlight Driver" depends on BACKLIGHT && DM_PWM |