diff options
author | Philippe Langlais <philippe.langlais@linaro.org> | 2011-05-11 10:04:48 +0200 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 11:03:54 +0200 |
commit | 3fd14c064eb8300e73380e3f99a42938fa8913d3 (patch) | |
tree | e1ad0504d52cb633de7a63ecfa58d5949185c4e7 /include | |
parent | 8c07839b5579caa069801923df99ed4ac62b08b0 (diff) |
video: mcde: Add tripple buffer support
This patch adds tripple buffer support to the mcde
driver. Useful for video mode devices (e.g. HDMI)
where a missed v-sync leads to half frame rate
(the client has to wait for the next v-sync).
Tripple buffering solves this problem since there
are two back buffers the client can use.
Tripple buffering for HDMI is activated in
menuconfig by enabling:
System Type -> Display selection -> Enable tripple
buffer for HDMI display
ST-Ericsson ID: 335004
ST-Ericsson Linux next: Not tested, ER 282779
ST-Ericsson FOSS-OUT ID: Trivial
Change-Id: Ice1f936a8a00e2fbc8fdf7e8c6621c539efe0ac4
Signed-off-by: Jimmy Rubin <jimmy.rubin@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/21839
Reviewed-by: QATOOLS
Reviewed-by: Per PERSSON <per.xb.persson@stericsson.com>
Reviewed-by: QATEST
Reviewed-by: Marcel TUNNISSEN <marcel.tuennissen@stericsson.com>
Conflicts:
arch/arm/configs/u8500_defconfig
drivers/misc/dispdev/dispdev.c
Diffstat (limited to 'include')
-rw-r--r-- | include/video/mcde.h | 3 | ||||
-rw-r--r-- | include/video/mcde_display.h | 2 | ||||
-rw-r--r-- | include/video/mcde_dss.h | 2 |
3 files changed, 4 insertions, 3 deletions
diff --git a/include/video/mcde.h b/include/video/mcde.h index ef828f0d560..4803779b36f 100644 --- a/include/video/mcde.h +++ b/include/video/mcde.h @@ -332,7 +332,8 @@ int mcde_chnl_set_power_mode(struct mcde_chnl_state *chnl, int mcde_chnl_apply(struct mcde_chnl_state *chnl); int mcde_chnl_update(struct mcde_chnl_state *chnl, - struct mcde_rectangle *update_area); + struct mcde_rectangle *update_area, + bool tripple_buffer); void mcde_chnl_put(struct mcde_chnl_state *chnl); void mcde_chnl_stop_flow(struct mcde_chnl_state *chnl); diff --git a/include/video/mcde_display.h b/include/video/mcde_display.h index 69ff1de4ef2..524e62904fc 100644 --- a/include/video/mcde_display.h +++ b/include/video/mcde_display.h @@ -97,7 +97,7 @@ struct mcde_display_device { int (*apply_config)(struct mcde_display_device *dev); int (*invalidate_area)(struct mcde_display_device *dev, struct mcde_rectangle *area); - int (*update)(struct mcde_display_device *dev); + int (*update)(struct mcde_display_device *dev, bool tripple_buffer); int (*prepare_for_update)(struct mcde_display_device *dev, u16 x, u16 y, u16 w, u16 h); int (*on_first_update)(struct mcde_display_device *dev); diff --git a/include/video/mcde_dss.h b/include/video/mcde_dss.h index 6a149a5dee6..c2603b87235 100644 --- a/include/video/mcde_dss.h +++ b/include/video/mcde_dss.h @@ -30,7 +30,7 @@ int mcde_dss_enable_overlay(struct mcde_overlay *ovl); void mcde_dss_disable_overlay(struct mcde_overlay *ovl); int mcde_dss_apply_overlay(struct mcde_overlay *ovl, struct mcde_overlay_info *info); -int mcde_dss_update_overlay(struct mcde_overlay *ovl); +int mcde_dss_update_overlay(struct mcde_overlay *ovl, bool tripple_buffer); void mcde_dss_get_native_resolution(struct mcde_display_device *ddev, u16 *x_res, u16 *y_res); |