diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-02-25 09:20:03 -0500 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2009-02-25 09:20:03 -0500 |
commit | 9495ea7cc8025a71b612d1dec412b204bb584a2f (patch) | |
tree | b71479501c17aca55456d8d61666ecd2ce9f058b | |
parent | 781fbf0e4436521f3805d2df0af8be8685a3fb55 (diff) |
R6xx/R7xx EXA: same surface and same coords equals nop
-rw-r--r-- | src/r600_exa.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/r600_exa.c b/src/r600_exa.c index a945539..f06d998 100644 --- a/src/r600_exa.c +++ b/src/r600_exa.c @@ -873,6 +873,9 @@ R600Copy(PixmapPtr pDst, RHDPtr rhdPtr = RHDPTR(pScrn); struct r6xx_accel_state *accel_state = rhdPtr->TwoDPrivate; + if (accel_state->same_surface && (srcX == dstX) && (srcY == dstY)) + return; + if (accel_state->same_surface && is_overlap(srcX, srcX + w, srcY, srcY + h, dstX, dstX + w, dstY, dstY + h)) { if (accel_state->copy_area) { uint32_t pitch = exaGetPixmapPitch(pDst) / (pDst->drawable.bitsPerPixel / 8); @@ -895,7 +898,7 @@ R600Copy(PixmapPtr pDst, R600DoCopy(pScrn); } else R600OverlapCopy(pDst, srcX, srcY, dstX, dstY, w, h); - } else if(accel_state->same_surface) { + } else if (accel_state->same_surface) { uint32_t pitch = exaGetPixmapPitch(pDst) / (pDst->drawable.bitsPerPixel / 8); uint32_t offset = exaGetPixmapOffset(pDst) + rhdPtr->FbIntAddress + rhdPtr->FbScanoutStart; |