[PATCH xf86-video-ati] Make radeon_scanout_do_update take a PixmapPtr instead of a DrawablePtr

Deucher, Alexander Alexander.Deucher at amd.com
Thu Aug 17 12:46:18 UTC 2017


> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Michel Dänzer
> Sent: Thursday, August 17, 2017 3:23 AM
> To: amd-gfx at lists.freedesktop.org
> Subject: [PATCH xf86-video-ati] Make radeon_scanout_do_update take a
> PixmapPtr instead of a DrawablePtr
> 
> From: Michel Dänzer <michel.daenzer at amd.com>
> 
> All callers were already passing in a pixmap.
> 
> This allows simplifying the rotated scanout case slightly.
> 
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  src/drmmode_display.c |  6 +++---
>  src/radeon.h          |  2 +-
>  src/radeon_kms.c      | 13 ++++++-------
>  3 files changed, 10 insertions(+), 11 deletions(-)
> 
> diff --git a/src/drmmode_display.c b/src/drmmode_display.c
> index 90588671d..4839b415c 100644
> --- a/src/drmmode_display.c
> +++ b/src/drmmode_display.c
> @@ -842,7 +842,7 @@ drmmode_crtc_scanout_update(xf86CrtcPtr crtc,
> DisplayModePtr mode,
>  		*x = *y = 0;
> 
>  		radeon_scanout_do_update(crtc, scanout_id,
> -					 &screen-
> >GetWindowPixmap(screen->root)->drawable,
> +					 screen->GetWindowPixmap(screen-
> >root),
>  					 box);
>  		radeon_bo_wait(drmmode_crtc->scanout[scanout_id].bo);
>  	}
> @@ -3050,8 +3050,8 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn,
> ClientPtr client,
>  				goto error;
>  			}
> 
> -			radeon_scanout_do_update(crtc, scanout_id,
> -						 &new_front->drawable,
> &extents);
> +			radeon_scanout_do_update(crtc, scanout_id,
> new_front,
> +						 &extents);
> 
> 
> 	drmmode_crtc_wait_pending_event(drmmode_crtc, pRADEONEnt-
> >fd,
>  							drmmode_crtc-
> >scanout_update_pending);
> diff --git a/src/radeon.h b/src/radeon.h
> index bba344340..71123c7c7 100644
> --- a/src/radeon.h
> +++ b/src/radeon.h
> @@ -665,7 +665,7 @@ Bool radeon_dri3_screen_init(ScreenPtr screen);
> 
>  /* radeon_kms.c */
>  Bool radeon_scanout_do_update(xf86CrtcPtr xf86_crtc, int scanout_id,
> -			      DrawablePtr src_draw, BoxPtr extents);
> +			      PixmapPtr src_pix, BoxPtr extents);
>  void RADEONWindowExposures_oneshot(WindowPtr pWin, RegionPtr
> pRegion
>  #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1,16,99,901,0)
>  				   , RegionPtr pBSRegion
> diff --git a/src/radeon_kms.c b/src/radeon_kms.c
> index 4c001a31f..ca2d36d04 100644
> --- a/src/radeon_kms.c
> +++ b/src/radeon_kms.c
> @@ -904,7 +904,7 @@ radeon_dirty_update(ScrnInfoPtr scrn)
> 
>  Bool
>  radeon_scanout_do_update(xf86CrtcPtr xf86_crtc, int scanout_id,
> -			 DrawablePtr src_draw, BoxPtr extents)
> +			 PixmapPtr src_pix, BoxPtr extents)
>  {
>      drmmode_crtc_private_ptr drmmode_crtc = xf86_crtc->driver_private;
>      RegionRec region = { .extents = *extents, .data = NULL };
> @@ -937,10 +937,9 @@ radeon_scanout_do_update(xf86CrtcPtr xf86_crtc,
> int scanout_id,
>  	PictFormatPtr format = PictureWindowFormat(pScreen->root);
>  	int error;
>  	PicturePtr src, dst;
> -	XID include_inferiors = IncludeInferiors;
> 
> -	src = CreatePicture(None, src_draw, format, CPSubwindowMode,
> -			    &include_inferiors, serverClient, &error);
> +	src = CreatePicture(None, &src_pix->drawable, format, 0L, NULL,
> +			    serverClient, &error);
>  	if (!src) {
>  	    ErrorF("Failed to create source picture for transformed scanout "
>  		   "update\n");
> @@ -984,7 +983,7 @@ radeon_scanout_do_update(xf86CrtcPtr xf86_crtc,
> int scanout_id,
>  	GCPtr gc = GetScratchGC(pDraw->depth, pScreen);
> 
>  	ValidateGC(pDraw, gc);
> -	(*gc->ops->CopyArea)(src_draw, pDraw, gc,
> +	(*gc->ops->CopyArea)(&src_pix->drawable, pDraw, gc,
>  			     xf86_crtc->x + extents->x1, xf86_crtc->y +
> extents->y1,
>  			     extents->x2 - extents->x1, extents->y2 - extents-
> >y1,
>  			     extents->x1, extents->y1);
> @@ -1018,7 +1017,7 @@ radeon_scanout_update_handler(xf86CrtcPtr crtc,
> uint32_t frame, uint64_t usec,
>  	!drmmode_crtc->flip_pending &&
>  	drmmode_crtc->dpms_mode == DPMSModeOn) {
>  	if (radeon_scanout_do_update(crtc, drmmode_crtc->scanout_id,
> -				     &screen->GetWindowPixmap(screen-
> >root)->drawable,
> +				     screen->GetWindowPixmap(screen-
> >root),
>  				     &region->extents))
>  	    RegionEmpty(region);
>      }
> @@ -1099,7 +1098,7 @@ radeon_scanout_flip(ScreenPtr pScreen,
> RADEONInfoPtr info,
> 
>      scanout_id = drmmode_crtc->scanout_id ^ 1;
>      if (!radeon_scanout_do_update(xf86_crtc, scanout_id,
> -				  &pScreen->GetWindowPixmap(pScreen-
> >root)->drawable,
> +				  pScreen->GetWindowPixmap(pScreen-
> >root),
>  				  &region->extents))
>  	return;
>      RegionEmpty(region);
> --
> 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