summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King <rmk@arm.linux.org.uk>2015-05-29 21:08:55 +0100
committerRussell King <rmk@arm.linux.org.uk>2015-06-29 12:58:32 +0100
commit53a9bccbd871290d5d9880a6744225ea36eb29af (patch)
tree1accac5163b2a86d6d982405faef356b791a4a8e
parent3a0f0de67cebabbd5de5e2cf5d7eaf34aaf95a42 (diff)
etnaviv: fix CopyNtoN clip box
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
-rw-r--r--etnaviv/etnaviv_accel.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/etnaviv/etnaviv_accel.c b/etnaviv/etnaviv_accel.c
index efc3f81..8894e8d 100644
--- a/etnaviv/etnaviv_accel.c
+++ b/etnaviv/etnaviv_accel.c
@@ -610,7 +610,7 @@ void etnaviv_accel_CopyNtoN(DrawablePtr pSrc, DrawablePtr pDst,
{
struct etnaviv *etnaviv = etnaviv_get_screen_priv(pDst->pScreen);
struct etnaviv_de_op op;
- BoxRec extent;
+ BoxRec extent, *clip;
if (!nBox)
return;
@@ -633,10 +633,16 @@ void etnaviv_accel_CopyNtoN(DrawablePtr pSrc, DrawablePtr pDst,
extent.y2 = min_t(short, pDst->y + pDst->height,
pSrc->y + pSrc->height - dy);
- if (extent.x1 < 0)
- extent.x1 = 0;
- if (extent.y1 < 0)
- extent.y1 = 0;
+ if (pGC) {
+ clip = RegionExtents(fbGetCompositeClip(pGC));
+ if (__box_intersect(&extent, &extent, clip))
+ return;
+ } else {
+ if (extent.x1 < 0)
+ extent.x1 = 0;
+ if (extent.y1 < 0)
+ extent.y1 = 0;
+ }
op.blend_op = NULL;
op.clip = &extent;