diff options
author | Michel Dänzer <daenzer@vmware.com> | 2009-02-24 08:12:42 +0100 |
---|---|---|
committer | Michel Dänzer <daenzer@vmware.com> | 2009-02-24 08:12:42 +0100 |
commit | e2e508bc08d993fc108297e9cd2fa0ce183282bc (patch) | |
tree | 0f51e937d3075b58bef1a56b4d4361b821a1076f | |
parent | 5ab8699c97c050424cf813b9a60550aba32446a2 (diff) |
Only call RADEONWaitForVLine if it might actually do anything useful.
Otherwise it and RADEONBiggerCrtcArea show up pretty high in x11perf -aa*text
profiles.
-rw-r--r-- | src/radeon.h | 4 | ||||
-rw-r--r-- | src/radeon_commonfuncs.c | 5 | ||||
-rw-r--r-- | src/radeon_exa_funcs.c | 9 | ||||
-rw-r--r-- | src/radeon_exa_render.c | 3 | ||||
-rw-r--r-- | src/radeon_textured_videofuncs.c | 20 |
5 files changed, 21 insertions, 20 deletions
diff --git a/src/radeon.h b/src/radeon.h index 2944fe88..af9c7c2e 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -947,11 +947,11 @@ extern Bool radeon_card_posted(ScrnInfoPtr pScrn); #ifdef XF86DRI extern void RADEONWaitForIdleCP(ScrnInfoPtr pScrn); extern void RADEONWaitForVLineCP(ScrnInfoPtr pScrn, PixmapPtr pPix, - int crtc, int start, int stop, int enable); + int crtc, int start, int stop); #endif extern void RADEONWaitForIdleMMIO(ScrnInfoPtr pScrn); extern void RADEONWaitForVLineMMIO(ScrnInfoPtr pScrn, PixmapPtr pPix, - int crtc, int start, int stop, int enable); + int crtc, int start, int stop); /* radeon_crtc.c */ extern void radeon_crtc_dpms(xf86CrtcPtr crtc, int mode); diff --git a/src/radeon_commonfuncs.c b/src/radeon_commonfuncs.c index 0a9f9db9..3aa61bcc 100644 --- a/src/radeon_commonfuncs.c +++ b/src/radeon_commonfuncs.c @@ -628,16 +628,13 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) /* inserts a wait for vline in the command stream */ void FUNC_NAME(RADEONWaitForVLine)(ScrnInfoPtr pScrn, PixmapPtr pPix, - int crtc, int start, int stop, Bool enable) + int crtc, int start, int stop) { RADEONInfoPtr info = RADEONPTR(pScrn); xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); uint32_t offset; ACCEL_PREAMBLE(); - if (!enable) - return; - if ((crtc < 0) || (crtc > 1)) return; diff --git a/src/radeon_exa_funcs.c b/src/radeon_exa_funcs.c index cd97cc6e..eb16036c 100644 --- a/src/radeon_exa_funcs.c +++ b/src/radeon_exa_funcs.c @@ -129,7 +129,8 @@ FUNC_NAME(RADEONSolid)(PixmapPtr pPix, int x1, int y1, int x2, int y2) TRACE; - FUNC_NAME(RADEONWaitForVLine)(pScrn, pPix, RADEONBiggerCrtcArea(pPix), y1, y2, info->accel_state->vsync); + if (info->accel_state->vsync) + FUNC_NAME(RADEONWaitForVLine)(pScrn, pPix, RADEONBiggerCrtcArea(pPix), y1, y2); BEGIN_ACCEL(2); OUT_ACCEL_REG(RADEON_DST_Y_X, (y1 << 16) | x1); @@ -230,7 +231,8 @@ FUNC_NAME(RADEONCopy)(PixmapPtr pDst, dstY += h - 1; } - FUNC_NAME(RADEONWaitForVLine)(pScrn, pDst, RADEONBiggerCrtcArea(pDst), dstY, dstY + h, info->accel_state->vsync); + if (info->accel_state->vsync) + FUNC_NAME(RADEONWaitForVLine)(pScrn, pDst, RADEONBiggerCrtcArea(pDst), dstY, dstY + h); BEGIN_ACCEL(3); @@ -281,7 +283,8 @@ RADEONUploadToScreenCP(PixmapPtr pDst, int x, int y, int w, int h, RADEON_SWITCH_TO_2D(); - FUNC_NAME(RADEONWaitForVLine)(pScrn, pDst, RADEONBiggerCrtcArea(pDst), y, y + h, info->accel_state->vsync); + if (info->accel_state->vsync) + FUNC_NAME(RADEONWaitForVLine)(pScrn, pDst, RADEONBiggerCrtcArea(pDst), y, y + h); while ((buf = RADEONHostDataBlit(pScrn, cpp, w, dst_pitch_off, &buf_pitch, diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c index c44502c1..6895ea56 100644 --- a/src/radeon_exa_render.c +++ b/src/radeon_exa_render.c @@ -2069,7 +2069,8 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst, } else vtx_count = 4; - FUNC_NAME(RADEONWaitForVLine)(pScrn, pDst, RADEONBiggerCrtcArea(pDst), dstY, dstY + h, info->accel_state->vsync); + if (info->accel_state->vsync) + FUNC_NAME(RADEONWaitForVLine)(pScrn, pDst, RADEONBiggerCrtcArea(pDst), dstY, dstY + h); #ifdef ACCEL_CP if (info->ChipFamily < CHIP_FAMILY_R200) { diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c index c6ed472f..f55ae12f 100644 --- a/src/radeon_textured_videofuncs.c +++ b/src/radeon_textured_videofuncs.c @@ -1475,16 +1475,16 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv } } - FUNC_NAME(RADEONWaitForVLine)(pScrn, pPixmap, - radeon_covering_crtc_num(pScrn, - pPriv->drw_x, - pPriv->drw_x + pPriv->dst_w, - pPriv->drw_y, - pPriv->drw_y + pPriv->dst_h, - pPriv->desired_crtc), - pPriv->drw_y, - pPriv->drw_y + pPriv->dst_h, - pPriv->vsync); + if (pPriv->vsync) + FUNC_NAME(RADEONWaitForVLine)(pScrn, pPixmap, + radeon_covering_crtc_num(pScrn, + pPriv->drw_x, + pPriv->drw_x + pPriv->dst_w, + pPriv->drw_y, + pPriv->drw_y + pPriv->dst_h, + pPriv->desired_crtc), + pPriv->drw_y, + pPriv->drw_y + pPriv->dst_h); /* * Rendering of the actual polygon is done in two different |