diff options
author | Kwanghyun Chung <khyun.chung@samsung.com> | 2022-01-18 19:13:36 +0900 |
---|---|---|
committer | TreeHugger Robot <treehugger-gerrit@google.com> | 2022-11-29 06:21:04 +0000 |
commit | d6925adf43e5587da8a83ffd8108539899450837 (patch) | |
tree | 70159fecb799111a8d45f101fd3749cd3fa66c7d | |
parent | 6164fbadf3ddbd87861a0d31f267398e8da485d8 (diff) | |
download | display-d6925adf43e5587da8a83ffd8108539899450837.tar.gz |
drm: samsung: handle vblank if fb handover is enabled
This patch prevents framestart timeout by handling
vblank when fb handover is enabled.
Bug: 202947589
Test: Enable continuous splash
Signed-off-by: Kwanghyun Chung <khyun.chung@samsung.com>
Signed-off-by: Leo Chen <yinchiuan@google.com>
(Cherry picked from commit db9ba46e3878277697557810f914f58510137593)
Change-Id: I9f413340dbd788adf90ff180f97c0574ee66776b
-rw-r--r-- | samsung/exynos_drm_decon.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/samsung/exynos_drm_decon.c b/samsung/exynos_drm_decon.c index 6bd7564..83ce503 100644 --- a/samsung/exynos_drm_decon.c +++ b/samsung/exynos_drm_decon.c @@ -755,9 +755,19 @@ static void decon_atomic_flush(struct exynos_drm_crtc *exynos_crtc, if (new_exynos_crtc_state->seamless_mode_changed) decon_seamless_mode_set(exynos_crtc, old_crtc_state); - /* during skip update, send vblank event on next vsync instead of frame start */ - if (!new_crtc_state->no_vblank) + /* + * during skip update, send vblank event on next vsync instead of frame start + * when it comes to video mode, vblank event is handled at fs_irq_handler. + * If fb handover is enabled, vblank event should be handled once because + * fs irq could be started after decon start by calling decon_reg_start(). + */ + if (!new_crtc_state->no_vblank) { exynos_crtc_handle_event(exynos_crtc); + if (decon->fb_handover.rmem) { + decon_force_vblank_event(decon); + drm_crtc_handle_vblank(&decon->crtc->base); + } + } return; } |