]> git.baikalelectronics.ru Git - kernel.git/commit
drm/crtc: Add a generic infrastructure to fake VBLANK events
authorBoris Brezillon <boris.brezillon@bootlin.com>
Tue, 3 Jul 2018 07:50:19 +0000 (09:50 +0200)
committerBoris Brezillon <boris.brezillon@bootlin.com>
Sat, 7 Jul 2018 05:53:09 +0000 (07:53 +0200)
commit7dd35576a13381212ac3b69ba4f5976504da433a
tree0d0cddb6694d71108605e11633689a21917d766f
parent499433ee6f5718f5fa00b1cdd439166f59391f67
drm/crtc: Add a generic infrastructure to fake VBLANK events

In some cases CRTCs are active but are not able to generating events, at
least not at every frame at it's expected to.
This is typically the case when the CRTC is feeding a writeback connector
that has no job queued. In this situation the CRTC is usually stopped
until a new job is queued, and this can lead to timeouts when part of
the pipeline is updated but no new jobs are queued to the active
writeback connector.

In order to solve that, we add a ->no_vblank flag to drm_crtc_state
and ask the CRTC drivers to set it to true when they know they're not
able to generate VBLANK events. The core drm_atomic_helper_fake_vblank()
helper can then be used to fake VBLANKs at commit time.

Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20180703075022.15138-6-boris.brezillon@bootlin.com
drivers/gpu/drm/drm_atomic_helper.c
include/drm/drm_atomic_helper.h
include/drm/drm_crtc.h