diff options
author | Michel Dänzer <michel.daenzer@amd.com> | 2017-08-17 16:20:52 +0900 |
---|---|---|
committer | Michel Dänzer <michel@daenzer.net> | 2017-08-17 16:20:52 +0900 |
commit | d822a0f47070374ad0c1a97b559bae27724dc52a (patch) | |
tree | 7bfadbc8a6f012a6cc55ed4bec246c009835e0e7 | |
parent | 3e24770b1b472fc15df56d06f5f04778c9db63dd (diff) |
Make radeon_scanout_do_update take a PixmapPtr instead of a DrawablePtr
All callers were already passing in a pixmap.
This allows simplifying the rotated scanout case slightly.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | src/drmmode_display.c | 6 | ||||
-rw-r--r-- | src/radeon.h | 2 | ||||
-rw-r--r-- | 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 90588671..4839b415 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 bba34434..71123c7c 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 4c001a31..ca2d36d0 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), ®ion->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), ®ion->extents)) return; RegionEmpty(region); |