[PATCH 2/2] drm/udl: Implement page_flip ioctl
David Herrmann
dh.herrmann at gmail.com
Tue Jul 8 00:15:47 PDT 2014
Hi
On Thu, Jul 3, 2014 at 12:13 AM, Stéphane Marchesin
<marcheu at chromium.org> wrote:
> This is a very crude page_flip implementation for UDL. There are ways
> to make it better (make it asynchronous, make it do actual vsynced
> flips...) but that's for another patch.
>
> Signed-off-by: Stéphane Marchesin <marcheu at chromium.org>
> ---
> drivers/gpu/drm/udl/udl_modeset.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c
> index cddc4fc..7dc3bd8 100644
> --- a/drivers/gpu/drm/udl/udl_modeset.c
> +++ b/drivers/gpu/drm/udl/udl_modeset.c
> @@ -363,6 +363,26 @@ static void udl_crtc_destroy(struct drm_crtc *crtc)
> kfree(crtc);
> }
>
> +static int udl_crtc_page_flip(struct drm_crtc *crtc,
> + struct drm_framebuffer *fb,
> + struct drm_pending_vblank_event *event,
> + uint32_t page_flip_flags)
> +{
> + struct udl_framebuffer *ufb = to_udl_fb(fb);
> + struct drm_device *dev = crtc->dev;
> + unsigned long flags;
> +
> + udl_handle_damage(ufb, 0, 0, fb->width, fb->height);
> +
> + spin_lock_irqsave(&dev->event_lock, flags);
> + if (event)
> + drm_send_vblank_event(dev, 0, event);
> + spin_unlock_irqrestore(&dev->event_lock, flags);
> + crtc->fb = fb;
Doesn't this break user-space that expects page-flip events to not
occur more often than the refresh-rate? For instance, weston
re-renders on each page-flip event. With this patch, it will never
sleep on udl as it immediately gets the page-flip event back?
Thanks
David
> +
> + return 0;
> +}
> +
> static void udl_crtc_prepare(struct drm_crtc *crtc)
> {
> }
> @@ -384,6 +404,7 @@ static struct drm_crtc_helper_funcs udl_helper_funcs = {
> static const struct drm_crtc_funcs udl_crtc_funcs = {
> .set_config = drm_crtc_helper_set_config,
> .destroy = udl_crtc_destroy,
> + .page_flip = udl_crtc_page_flip,
> };
>
> static int udl_crtc_init(struct drm_device *dev)
> --
> 2.0.0.526.g5318336
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list