Commit 900f5de6 authored by Gustavo Padovan's avatar Gustavo Padovan Committed by Kamal Mostafa

drm/virtio: send vblank event after crtc updates

commit 9a11d2e7 upstream.

virtio_gpu was failing to send vblank events when using the atomic IOCTL
with the DRM_MODE_PAGE_FLIP_EVENT flag set. This patch fixes each and
enables atomic pageflips updates.
Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
[ kamal: backport to 4.2-stable: older crtc api ]
Signed-off-by: default avatarKamal Mostafa <kamal@canonical.com>
parent 134f51cd
...@@ -223,12 +223,23 @@ static int virtio_gpu_crtc_atomic_check(struct drm_crtc *crtc, ...@@ -223,12 +223,23 @@ static int virtio_gpu_crtc_atomic_check(struct drm_crtc *crtc,
return 0; return 0;
} }
static void virtio_gpu_crtc_atomic_flush(struct drm_crtc *crtc)
{
unsigned long flags;
spin_lock_irqsave(&crtc->dev->event_lock, flags);
if (crtc->state->event)
drm_crtc_send_vblank_event(crtc, crtc->state->event);
spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
}
static const struct drm_crtc_helper_funcs virtio_gpu_crtc_helper_funcs = { static const struct drm_crtc_helper_funcs virtio_gpu_crtc_helper_funcs = {
.enable = virtio_gpu_crtc_enable, .enable = virtio_gpu_crtc_enable,
.disable = virtio_gpu_crtc_disable, .disable = virtio_gpu_crtc_disable,
.mode_fixup = virtio_gpu_crtc_mode_fixup, .mode_fixup = virtio_gpu_crtc_mode_fixup,
.mode_set_nofb = virtio_gpu_crtc_mode_set_nofb, .mode_set_nofb = virtio_gpu_crtc_mode_set_nofb,
.atomic_check = virtio_gpu_crtc_atomic_check, .atomic_check = virtio_gpu_crtc_atomic_check,
.atomic_flush = virtio_gpu_crtc_atomic_flush,
}; };
static bool virtio_gpu_enc_mode_fixup(struct drm_encoder *encoder, static bool virtio_gpu_enc_mode_fixup(struct drm_encoder *encoder,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment