summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-02-25 09:20:03 -0500
committerAlex Deucher <alexdeucher@gmail.com>2009-02-25 09:20:03 -0500
commit9495ea7cc8025a71b612d1dec412b204bb584a2f (patch)
treeb71479501c17aca55456d8d61666ecd2ce9f058b
parent781fbf0e4436521f3805d2df0af8be8685a3fb55 (diff)
R6xx/R7xx EXA: same surface and same coords equals nop
-rw-r--r--src/r600_exa.c5
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;