Commit 2408898e authored by Steve Longerbeam's avatar Steve Longerbeam Committed by Greg Kroah-Hartman

staging: vboxvideo: Add page-flip support

Adds crtc page-flip support by passing the new requested framebuffer
to vbox_crtc_do_set_base().

Note there is no attempt to support vblank interrupts, it's not
not known how to do this in VBOX or if it is even possible. Since
this page-flip implementation does not try to sync the page-flip
to vertical blanking, tearing effects are possible.
Signed-off-by: default avatarSteve Longerbeam <steve_longerbeam@mentor.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ba67f54d
......@@ -308,6 +308,31 @@ static int vbox_crtc_mode_set(struct drm_crtc *crtc,
return ret;
}
static int vbox_crtc_page_flip(struct drm_crtc *crtc,
struct drm_framebuffer *fb,
struct drm_pending_vblank_event *event,
uint32_t page_flip_flags,
struct drm_modeset_acquire_ctx *ctx)
{
struct vbox_private *vbox = crtc->dev->dev_private;
struct drm_device *drm = vbox->dev;
unsigned long flags;
int rc;
rc = vbox_crtc_do_set_base(crtc, CRTC_FB(crtc), fb, 0, 0);
if (rc)
return rc;
spin_lock_irqsave(&drm->event_lock, flags);
if (event)
drm_crtc_send_vblank_event(crtc, event);
spin_unlock_irqrestore(&drm->event_lock, flags);
return 0;
}
static void vbox_crtc_disable(struct drm_crtc *crtc)
{
}
......@@ -346,6 +371,7 @@ static const struct drm_crtc_funcs vbox_crtc_funcs = {
.reset = vbox_crtc_reset,
.set_config = drm_crtc_helper_set_config,
/* .gamma_set = vbox_crtc_gamma_set, */
.page_flip = vbox_crtc_page_flip,
.destroy = vbox_crtc_destroy,
};
......
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