summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-02-05 16:12:28 -0500
committerAlex Deucher <alexdeucher@gmail.com>2009-02-05 16:12:28 -0500
commit989275e2ea28ae213e819dd1c16dd3be3c41e15a (patch)
tree5bd9f4c34cb0b44324daa806a37fe3bce915cb06
parent3317760a365ce2c9f98f94da950671397ce6d773 (diff)
r6xx/r7xx EXA: cleanup overlapping copy
-rw-r--r--src/r600_exa.c153
1 files changed, 5 insertions, 148 deletions
diff --git a/src/r600_exa.c b/src/r600_exa.c
index 0908e20..20875f3 100644
--- a/src/r600_exa.c
+++ b/src/r600_exa.c
@@ -719,8 +719,6 @@ R600OverlapCopy(PixmapPtr pDst,
struct r6xx_accel_state *accel_state = rhdPtr->TwoDPrivate;
uint32_t dst_pitch = exaGetPixmapPitch(pDst) / (pDst->drawable.bitsPerPixel / 8);
uint32_t dst_offset = exaGetPixmapOffset(pDst) + rhdPtr->FbIntAddress + rhdPtr->FbScanoutStart;
- struct r6xx_copy_vertex *copy_vb;
- struct r6xx_copy_vertex vertex[3];
int i;
if (is_overlap(srcX, srcX + w, srcY, srcY + h,
@@ -733,36 +731,7 @@ R600OverlapCopy(PixmapPtr pDst,
dst_pitch, pDst->drawable.width, pDst->drawable.height, dst_offset, pDst->drawable.bitsPerPixel,
dst_pitch, pDst->drawable.height, dst_offset, pDst->drawable.bitsPerPixel,
accel_state->rop, accel_state->planemask);
-
- copy_vb = (pointer)((char*)accel_state->ib->address + (accel_state->ib->total / 2));
-
- vertex[0].x = (float)(dstX + i - 1);
- vertex[0].y = (float)dstY;
- vertex[0].s = (float)(srcX + i - 1);
- vertex[0].t = (float)srcY;
-
- vertex[1].x = (float)(dstX + i - 1);
- vertex[1].y = (float)(dstY + h);
- vertex[1].s = (float)(srcX + i - 1);
- vertex[1].t = (float)(srcY + h);
-
- vertex[2].x = (float)(dstX + i);
- vertex[2].y = (float)(dstY + h);
- vertex[2].s = (float)(srcX + i);
- vertex[2].t = (float)(srcY + h);
-
-#ifdef SHOW_VERTEXES
- ErrorF("vertex 0: %f, %f, %f, %f\n", vertex[0].x, vertex[0].y, vertex[0].s, vertex[0].t);
- ErrorF("vertex 1: %f, %f, %f, %f\n", vertex[1].x, vertex[1].y, vertex[1].s, vertex[1].t);
- ErrorF("vertex 2: %f, %f, %f, %f\n", vertex[2].x, vertex[2].y, vertex[2].s, vertex[2].t);
-#endif
-
- // append to vertex buffer
- copy_vb[accel_state->vb_index++] = vertex[0];
- copy_vb[accel_state->vb_index++] = vertex[1];
- copy_vb[accel_state->vb_index++] = vertex[2];
-
- // do the blit
+ R600AppendCopyVertex(pScrn, srcX + i - 1, srcY, dstX + i - 1, dstY, 1, h);
R600DoCopy(pScrn);
}
} else { //left
@@ -773,35 +742,7 @@ R600OverlapCopy(PixmapPtr pDst,
dst_pitch, pDst->drawable.height, dst_offset, pDst->drawable.bitsPerPixel,
accel_state->rop, accel_state->planemask);
- copy_vb = (pointer)((char*)accel_state->ib->address + (accel_state->ib->total / 2));
-
- vertex[0].x = (float)(dstX + i);
- vertex[0].y = (float)(dstY);
- vertex[0].s = (float)(srcX + i);
- vertex[0].t = (float)srcY;
-
- vertex[1].x = (float)(dstX + i);
- vertex[1].y = (float)(dstY + h);
- vertex[1].s = (float)(srcX + i);
- vertex[1].t = (float)(srcY + h);
-
- vertex[2].x = (float)(dstX + i + 1);
- vertex[2].y = (float)(dstY + h);
- vertex[2].s = (float)(srcX + i + 1);
- vertex[2].t = (float)(srcY + h);
-
-#ifdef SHOW_VERTEXES
- ErrorF("vertex 0: %f, %f, %f, %f\n", vertex[0].x, vertex[0].y, vertex[0].s, vertex[0].t);
- ErrorF("vertex 1: %f, %f, %f, %f\n", vertex[1].x, vertex[1].y, vertex[1].s, vertex[1].t);
- ErrorF("vertex 2: %f, %f, %f, %f\n", vertex[2].x, vertex[2].y, vertex[2].s, vertex[2].t);
-#endif
-
- // append to vertex buffer
- copy_vb[accel_state->vb_index++] = vertex[0];
- copy_vb[accel_state->vb_index++] = vertex[1];
- copy_vb[accel_state->vb_index++] = vertex[2];
-
- // do the blit
+ R600AppendCopyVertex(pScrn, srcX + i, srcY, dstX + i, dstY, 1, h);
R600DoCopy(pScrn);
}
}
@@ -814,35 +755,7 @@ R600OverlapCopy(PixmapPtr pDst,
dst_pitch, pDst->drawable.height, dst_offset, pDst->drawable.bitsPerPixel,
accel_state->rop, accel_state->planemask);
- copy_vb = (pointer)((char*)accel_state->ib->address + (accel_state->ib->total / 2));
-
- vertex[0].x = (float)dstX;
- vertex[0].y = (float)(dstY + i);
- vertex[0].s = (float)srcX;
- vertex[0].t = (float)(srcY + i);
-
- vertex[1].x = (float)dstX;
- vertex[1].y = (float)(dstY + i + 1);
- vertex[1].s = (float)srcX;
- vertex[1].t = (float)(srcY + i + 1);
-
- vertex[2].x = (float)(dstX + w);
- vertex[2].y = (float)(dstY + i + 1);
- vertex[2].s = (float)(srcX + w);
- vertex[2].t = (float)(srcY + i + 1);
-
-#ifdef SHOW_VERTEXES
- ErrorF("vertex 0: %f, %f, %f, %f\n", vertex[0].x, vertex[0].y, vertex[0].s, vertex[0].t);
- ErrorF("vertex 1: %f, %f, %f, %f\n", vertex[1].x, vertex[1].y, vertex[1].s, vertex[1].t);
- ErrorF("vertex 2: %f, %f, %f, %f\n", vertex[2].x, vertex[2].y, vertex[2].s, vertex[2].t);
-#endif
-
- // append to vertex buffer
- copy_vb[accel_state->vb_index++] = vertex[0];
- copy_vb[accel_state->vb_index++] = vertex[1];
- copy_vb[accel_state->vb_index++] = vertex[2];
-
- // do the blit
+ R600AppendCopyVertex(pScrn, srcX, srcY + i, dstX, dstY + i, w, 1);
R600DoCopy(pScrn);
}
} else { // down
@@ -853,35 +766,7 @@ R600OverlapCopy(PixmapPtr pDst,
dst_pitch, pDst->drawable.height, dst_offset, pDst->drawable.bitsPerPixel,
accel_state->rop, accel_state->planemask);
- copy_vb = (pointer)((char*)accel_state->ib->address + (accel_state->ib->total / 2));
-
- vertex[0].x = (float)dstX;
- vertex[0].y = (float)(dstY + i - 1);
- vertex[0].s = (float)(srcX);
- vertex[0].t = (float)(srcY + i - 1);
-
- vertex[1].x = (float)dstX;
- vertex[1].y = (float)(dstY + i);
- vertex[1].s = (float)srcX;
- vertex[1].t = (float)srcY + i;
-
- vertex[2].x = (float)(dstX + w);
- vertex[2].y = (float)(dstY + i);
- vertex[2].s = (float)(srcX + w);
- vertex[2].t = (float)(srcY + i);
-
-#ifdef SHOW_VERTEXES
- ErrorF("vertex 0: %f, %f, %f, %f\n", vertex[0].x, vertex[0].y, vertex[0].s, vertex[0].t);
- ErrorF("vertex 1: %f, %f, %f, %f\n", vertex[1].x, vertex[1].y, vertex[1].s, vertex[1].t);
- ErrorF("vertex 2: %f, %f, %f, %f\n", vertex[2].x, vertex[2].y, vertex[2].s, vertex[2].t);
-#endif
-
- // append to vertex buffer
- copy_vb[accel_state->vb_index++] = vertex[0];
- copy_vb[accel_state->vb_index++] = vertex[1];
- copy_vb[accel_state->vb_index++] = vertex[2];
-
- // do the blit
+ R600AppendCopyVertex(pScrn, srcX, srcY + i - 1, dstX, dstY + i - 1, w, 1);
R600DoCopy(pScrn);
}
}
@@ -892,35 +777,7 @@ R600OverlapCopy(PixmapPtr pDst,
dst_pitch, pDst->drawable.height, dst_offset, pDst->drawable.bitsPerPixel,
accel_state->rop, accel_state->planemask);
- copy_vb = (pointer)((char*)accel_state->ib->address + (accel_state->ib->total / 2));
-
- vertex[0].x = (float)dstX;
- vertex[0].y = (float)dstY;
- vertex[0].s = (float)srcX;
- vertex[0].t = (float)srcY;
-
- vertex[1].x = (float)dstX;
- vertex[1].y = (float)(dstY + h);
- vertex[1].s = (float)srcX;
- vertex[1].t = (float)(srcY + h);
-
- vertex[2].x = (float)(dstX + w);
- vertex[2].y = (float)(dstY + h);
- vertex[2].s = (float)(srcX + w);
- vertex[2].t = (float)(srcY + h);
-
-#ifdef SHOW_VERTEXES
- ErrorF("vertex 0: %f, %f, %f, %f\n", vertex[0].x, vertex[0].y, vertex[0].s, vertex[0].t);
- ErrorF("vertex 1: %f, %f, %f, %f\n", vertex[1].x, vertex[1].y, vertex[1].s, vertex[1].t);
- ErrorF("vertex 2: %f, %f, %f, %f\n", vertex[2].x, vertex[2].y, vertex[2].s, vertex[2].t);
-#endif
-
- // append to vertex buffer
- copy_vb[accel_state->vb_index++] = vertex[0];
- copy_vb[accel_state->vb_index++] = vertex[1];
- copy_vb[accel_state->vb_index++] = vertex[2];
-
- // do the blit
+ R600AppendCopyVertex(pScrn, srcX, srcY, dstX, dstY, w, h);
R600DoCopy(pScrn);
}
}