[PATCH xf86-video-ati] Consolidate radeon_scanout_flip_abort/handler helpers
Deucher, Alexander
Alexander.Deucher at amd.com
Wed Aug 16 16:19:09 UTC 2017
> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Michel Dänzer
> Sent: Wednesday, August 16, 2017 5:36 AM
> To: amd-gfx at lists.freedesktop.org
> Subject: [PATCH xf86-video-ati] Consolidate
> radeon_scanout_flip_abort/handler helpers
>
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> While at it, make them use crtc->driver_private.
>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> src/radeon_kms.c | 85 ++++++++++++++++++++++++---------------------------
> -----
> 1 file changed, 36 insertions(+), 49 deletions(-)
>
> diff --git a/src/radeon_kms.c b/src/radeon_kms.c
> index 7febf1487..4c001a31f 100644
> --- a/src/radeon_kms.c
> +++ b/src/radeon_kms.c
> @@ -518,6 +518,38 @@ radeon_sync_scanout_pixmaps(xf86CrtcPtr
> xf86_crtc, RegionPtr new_region,
> RegionUninit(&remaining);
> }
>
> +static void
> +radeon_scanout_flip_abort(xf86CrtcPtr crtc, void *event_data)
> +{
> + RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn);
> + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
> +
> + drmmode_crtc->scanout_update_pending = FALSE;
> + drmmode_fb_reference(pRADEONEnt->fd, &drmmode_crtc-
> >flip_pending,
> + NULL);
> +}
> +
> +static void
> +radeon_scanout_flip_handler(xf86CrtcPtr crtc, uint32_t msc, uint64_t usec,
> + void *event_data)
> +{
> + RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn);
> + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
> +
> + drmmode_fb_reference(pRADEONEnt->fd, &drmmode_crtc->fb,
> + drmmode_crtc->flip_pending);
> + radeon_scanout_flip_abort(crtc, event_data);
> +
> +#ifdef HAVE_PRESENT_H
> + if (drmmode_crtc->present_vblank_event_id) {
> + present_event_notify(drmmode_crtc->present_vblank_event_id,
> + drmmode_crtc->present_vblank_usec,
> + drmmode_crtc->present_vblank_msc);
> + drmmode_crtc->present_vblank_event_id = 0;
> + }
> +#endif
> +}
> +
> #ifdef RADEON_PIXMAP_SHARING
>
> static RegionPtr
> @@ -762,38 +794,6 @@
> radeon_prime_scanout_update(PixmapDirtyUpdatePtr dirty)
> drmmode_crtc->scanout_update_pending = TRUE;
> }
>
> -static void
> -radeon_prime_scanout_flip_abort(xf86CrtcPtr crtc, void *event_data)
> -{
> - RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn);
> - drmmode_crtc_private_ptr drmmode_crtc = event_data;
> -
> - drmmode_crtc->scanout_update_pending = FALSE;
> - drmmode_fb_reference(pRADEONEnt->fd, &drmmode_crtc-
> >flip_pending,
> - NULL);
> -}
> -
> -static void
> -radeon_prime_scanout_flip_handler(xf86CrtcPtr crtc, uint32_t msc,
> uint64_t usec,
> - void *event_data)
> -{
> - RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn);
> - drmmode_crtc_private_ptr drmmode_crtc = event_data;
> -
> - drmmode_fb_reference(pRADEONEnt->fd, &drmmode_crtc->fb,
> - drmmode_crtc->flip_pending);
> - radeon_prime_scanout_flip_abort(crtc, event_data);
> -
> -#ifdef HAVE_PRESENT_H
> - if (drmmode_crtc->present_vblank_event_id) {
> - present_event_notify(drmmode_crtc->present_vblank_event_id,
> - drmmode_crtc->present_vblank_usec,
> - drmmode_crtc->present_vblank_msc);
> - drmmode_crtc->present_vblank_event_id = 0;
> - }
> -#endif
> -}
> -
> static void
> radeon_prime_scanout_flip(PixmapDirtyUpdatePtr ent)
> {
> @@ -821,9 +821,9 @@ radeon_prime_scanout_flip(PixmapDirtyUpdatePtr
> ent)
> drm_queue_seq = radeon_drm_queue_alloc(crtc,
>
> RADEON_DRM_QUEUE_CLIENT_DEFAULT,
>
> RADEON_DRM_QUEUE_ID_DEFAULT,
> - drmmode_crtc,
> -
> radeon_prime_scanout_flip_handler,
> - radeon_prime_scanout_flip_abort);
> + NULL,
> + radeon_scanout_flip_handler,
> + radeon_scanout_flip_abort);
> if (drm_queue_seq == RADEON_DRM_QUEUE_ERROR) {
> xf86DrvMsg(scrn->scrnIndex, X_WARNING,
> "Allocating DRM event queue entry failed for PRIME
> flip.\n");
> @@ -1081,19 +1081,6 @@ radeon_scanout_update(xf86CrtcPtr xf86_crtc)
> drmmode_crtc->scanout_update_pending = TRUE;
> }
>
> -static void
> -radeon_scanout_flip_abort(xf86CrtcPtr crtc, void *event_data)
> -{
> - radeon_prime_scanout_flip_abort(crtc, event_data);
> -}
> -
> -static void
> -radeon_scanout_flip_handler(xf86CrtcPtr crtc, uint32_t msc, uint64_t usec,
> - void *event_data)
> -{
> - radeon_prime_scanout_flip_handler(crtc, msc, usec, event_data);
> -}
> -
> static void
> radeon_scanout_flip(ScreenPtr pScreen, RADEONInfoPtr info,
> xf86CrtcPtr xf86_crtc)
> @@ -1120,7 +1107,7 @@ radeon_scanout_flip(ScreenPtr pScreen,
> RADEONInfoPtr info,
> drm_queue_seq = radeon_drm_queue_alloc(xf86_crtc,
>
> RADEON_DRM_QUEUE_CLIENT_DEFAULT,
>
> RADEON_DRM_QUEUE_ID_DEFAULT,
> - drmmode_crtc,
> + NULL,
> radeon_scanout_flip_handler,
> radeon_scanout_flip_abort);
> if (drm_queue_seq == RADEON_DRM_QUEUE_ERROR) {
> --
> 2.14.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list