[PATCH xf86-video-amdgpu 3/3] Make amdgpu_scanout_do_update take a PixmapPtr instead of a DrawablePtr

Deucher, Alexander Alexander.Deucher at amd.com
Fri Aug 18 14:27:40 UTC 2017


> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Michel Dänzer
> Sent: Friday, August 18, 2017 4:55 AM
> To: amd-gfx at lists.freedesktop.org
> Subject: [PATCH xf86-video-amdgpu 3/3] Make
> amdgpu_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.
> 
> (Ported from radeon commit d822a0f47070374ad0c1a97b559bae27724dc52a)
> 
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

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

> ---
>  src/amdgpu_drv.h      |  2 +-
>  src/amdgpu_kms.c      | 13 ++++++-------
>  src/drmmode_display.c |  6 +++---
>  3 files changed, 10 insertions(+), 11 deletions(-)
> 
> diff --git a/src/amdgpu_drv.h b/src/amdgpu_drv.h
> index 13237470a..75c2a2653 100644
> --- a/src/amdgpu_drv.h
> +++ b/src/amdgpu_drv.h
> @@ -341,7 +341,7 @@ Bool amdgpu_dri3_screen_init(ScreenPtr screen);
> 
>  /* amdgpu_kms.c */
>  Bool amdgpu_scanout_do_update(xf86CrtcPtr xf86_crtc, int scanout_id,
> -			       DrawablePtr src_draw, BoxPtr extents);
> +			      PixmapPtr src_pix, BoxPtr extents);
>  void AMDGPUWindowExposures_oneshot(WindowPtr pWin, RegionPtr
> pRegion
>  #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1,16,99,901,0)
>  				   , RegionPtr pBSRegion
> diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c
> index f665a01cd..e0b735819 100644
> --- a/src/amdgpu_kms.c
> +++ b/src/amdgpu_kms.c
> @@ -806,7 +806,7 @@ amdgpu_dirty_update(ScrnInfoPtr scrn)
> 
>  Bool
>  amdgpu_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 };
> @@ -834,10 +834,9 @@ amdgpu_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");
> @@ -880,7 +879,7 @@ amdgpu_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);
> @@ -912,7 +911,7 @@ amdgpu_scanout_update_handler(xf86CrtcPtr crtc,
> uint32_t frame, uint64_t usec,
>  	    !drmmode_crtc->flip_pending &&
>  	    drmmode_crtc->dpms_mode == DPMSModeOn) {
>  		if (amdgpu_scanout_do_update(crtc, drmmode_crtc-
> >scanout_id,
> -					     &screen-
> >GetWindowPixmap(screen->root)->drawable,
> +					     screen-
> >GetWindowPixmap(screen->root),
>  					     &region->extents))
>  			RegionEmpty(region);
>  	}
> @@ -993,7 +992,7 @@ amdgpu_scanout_flip(ScreenPtr pScreen,
> AMDGPUInfoPtr info,
> 
>  	scanout_id = drmmode_crtc->scanout_id ^ 1;
>  	if (!amdgpu_scanout_do_update(xf86_crtc, scanout_id,
> -				      &pScreen->GetWindowPixmap(pScreen-
> >root)->drawable,
> +				      pScreen->GetWindowPixmap(pScreen-
> >root),
>  				      &region->extents))
>  		return;
>  	RegionEmpty(region);
> diff --git a/src/drmmode_display.c b/src/drmmode_display.c
> index edd955ece..ad3325be6 100644
> --- a/src/drmmode_display.c
> +++ b/src/drmmode_display.c
> @@ -779,7 +779,7 @@ drmmode_crtc_scanout_update(xf86CrtcPtr crtc,
> DisplayModePtr mode,
>  		*x = *y = 0;
> 
>  		amdgpu_scanout_do_update(crtc, scanout_id,
> -					 &screen-
> >GetWindowPixmap(screen->root)->drawable,
> +					 screen->GetWindowPixmap(screen-
> >root),
>  					 box);
>  		amdgpu_glamor_finish(scrn);
>  	}
> @@ -2850,8 +2850,8 @@ Bool amdgpu_do_pageflip(ScrnInfoPtr scrn,
> ClientPtr client,
>  				goto error;
>  			}
> 
> -			amdgpu_scanout_do_update(crtc, scanout_id,
> -						 &new_front->drawable,
> &extents);
> +			amdgpu_scanout_do_update(crtc, scanout_id,
> new_front,
> +						 &extents);
> 
> 
> 	drmmode_crtc_wait_pending_event(drmmode_crtc, pAMDGPUEnt-
> >fd,
>  							drmmode_crtc-
> >scanout_update_pending);
> --
> 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