[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