summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2020-07-02 21:12:29 -0600
committerBin Meng <bmeng.cn@gmail.com>2020-07-09 12:33:24 +0800
commitf578ca799eec188fc96da3a1680c78c5f924b928 (patch)
tree9aa17abb7a52d64b4453fedba2b39d2667e666d7 /drivers/video
parentef453129799379d6073e103c8ff1c2f807f73898 (diff)
video: sandbox: Add support for the copy framebuffer
Enable this feature on sandbox by updating the SDL driver to have two framebuffers. Update the video tests to check that the copy framebuffer is kept in sync. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Anatolij Gustschin <agust@denx.de>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/sandbox_sdl.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/video/sandbox_sdl.c b/drivers/video/sandbox_sdl.c
index c678e728db..f529a350fb 100644
--- a/drivers/video/sandbox_sdl.c
+++ b/drivers/video/sandbox_sdl.c
@@ -23,6 +23,7 @@ enum {
static int sandbox_sdl_probe(struct udevice *dev)
{
+ struct video_uc_platdata *uc_plat = dev_get_uclass_platdata(dev);
struct sandbox_sdl_plat *plat = dev_get_platdata(dev);
struct video_priv *uc_priv = dev_get_uclass_priv(dev);
struct sandbox_state *state = state_get_current();
@@ -40,6 +41,8 @@ static int sandbox_sdl_probe(struct udevice *dev)
uc_priv->rot = plat->rot;
uc_priv->vidconsole_drv_name = plat->vidconsole_drv_name;
uc_priv->font_size = plat->font_size;
+ if (IS_ENABLED(CONFIG_VIDEO_COPY))
+ uc_plat->copy_base = uc_plat->base - uc_plat->size / 2;
return 0;
}
@@ -55,7 +58,11 @@ static int sandbox_sdl_bind(struct udevice *dev)
plat->bpix = dev_read_u32_default(dev, "log2-depth", VIDEO_BPP16);
plat->rot = dev_read_u32_default(dev, "rotate", 0);
uc_plat->size = plat->xres * plat->yres * (1 << plat->bpix) / 8;
- debug("%s: Frame buffer size %x\n", __func__, uc_plat->size);
+
+ /* Allow space for two buffers, the lower one being the copy buffer */
+ log_debug("Frame buffer size %x\n", uc_plat->size);
+ if (IS_ENABLED(CONFIG_VIDEO_COPY))
+ uc_plat->size *= 2;
return ret;
}