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: Steve Longerbeam <steve_longerbeam@mentor.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ba67f54d91
commit
2408898e3b
1 changed files with 26 additions and 0 deletions
|
@ -308,6 +308,31 @@ static int vbox_crtc_mode_set(struct drm_crtc *crtc,
|
||||||
return ret;
|
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)
|
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,
|
.reset = vbox_crtc_reset,
|
||||||
.set_config = drm_crtc_helper_set_config,
|
.set_config = drm_crtc_helper_set_config,
|
||||||
/* .gamma_set = vbox_crtc_gamma_set, */
|
/* .gamma_set = vbox_crtc_gamma_set, */
|
||||||
|
.page_flip = vbox_crtc_page_flip,
|
||||||
.destroy = vbox_crtc_destroy,
|
.destroy = vbox_crtc_destroy,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue