summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichel Dänzer <daenzer@vmware.com>2009-02-24 08:12:42 +0100
committerMichel Dänzer <daenzer@vmware.com>2009-02-24 08:12:42 +0100
commite2e508bc08d993fc108297e9cd2fa0ce183282bc (patch)
tree0f51e937d3075b58bef1a56b4d4361b821a1076f /src
parent5ab8699c97c050424cf813b9a60550aba32446a2 (diff)
Only call RADEONWaitForVLine if it might actually do anything useful.
Otherwise it and RADEONBiggerCrtcArea show up pretty high in x11perf -aa*text profiles.
Diffstat (limited to 'src')
-rw-r--r--src/radeon.h4
-rw-r--r--src/radeon_commonfuncs.c5
-rw-r--r--src/radeon_exa_funcs.c9
-rw-r--r--src/radeon_exa_render.c3
-rw-r--r--src/radeon_textured_videofuncs.c20
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