diff options
author | Russell King <rmk@arm.linux.org.uk> | 2015-05-29 21:08:55 +0100 |
---|---|---|
committer | Russell King <rmk@arm.linux.org.uk> | 2015-06-29 12:58:32 +0100 |
commit | 53a9bccbd871290d5d9880a6744225ea36eb29af (patch) | |
tree | 1accac5163b2a86d6d982405faef356b791a4a8e | |
parent | 3a0f0de67cebabbd5de5e2cf5d7eaf34aaf95a42 (diff) |
etnaviv: fix CopyNtoN clip box
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
-rw-r--r-- | etnaviv/etnaviv_accel.c | 16 |
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; |