summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/blit.c
diff options
context:
space:
mode:
authorAnuj Phogat <anuj.phogat@gmail.com>2015-12-11 14:41:30 -0800
committerAnuj Phogat <anuj.phogat@gmail.com>2016-06-10 14:35:21 -0700
commitf8679badd423b61b3a49e1138445f9f3d740fdde (patch)
tree6c61eea03697697bb3bc5c1b7c709167ca433a45 /src/mesa/main/blit.c
parent1584918996f0deb5de0c4759b23d00ce52db37a4 (diff)
downloadexternal_mesa3d-f8679badd423b61b3a49e1138445f9f3d740fdde.zip
external_mesa3d-f8679badd423b61b3a49e1138445f9f3d740fdde.tar.gz
external_mesa3d-f8679badd423b61b3a49e1138445f9f3d740fdde.tar.bz2
mesa: Fix region overlap conditions for rectangles with a shared edge
>From OpenGL 4.0 spec, section 4.3.2 "Copying Pixels": "The pixels corresponding to these buffers are copied from the source rectangle bounded by the locations (srcX0, srcY 0) and (srcX1, srcY 1) to the destination rectangle bounded by the locations (dstX0, dstY 0) and (dstX1, dstY 1). The lower bounds of the rectangle are inclusive, while the upper bounds are exclusive." So, the rectangles sharing just an edge shouldn't overlap. ----------- | | ------- --- | | | | | | ------- --- Cc: "12.0" <mesa-stable@lists.freedesktop.org> Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Diffstat (limited to 'src/mesa/main/blit.c')
-rw-r--r--src/mesa/main/blit.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/mesa/main/blit.c b/src/mesa/main/blit.c
index 5729e60..e739130 100644
--- a/src/mesa/main/blit.c
+++ b/src/mesa/main/blit.c
@@ -68,16 +68,16 @@ _mesa_regions_overlap(int srcX0, int srcY0,
int dstX0, int dstY0,
int dstX1, int dstY1)
{
- if (MAX2(srcX0, srcX1) < MIN2(dstX0, dstX1))
+ if (MAX2(srcX0, srcX1) <= MIN2(dstX0, dstX1))
return false; /* dst completely right of src */
- if (MAX2(dstX0, dstX1) < MIN2(srcX0, srcX1))
+ if (MAX2(dstX0, dstX1) <= MIN2(srcX0, srcX1))
return false; /* dst completely left of src */
- if (MAX2(srcY0, srcY1) < MIN2(dstY0, dstY1))
+ if (MAX2(srcY0, srcY1) <= MIN2(dstY0, dstY1))
return false; /* dst completely above src */
- if (MAX2(dstY0, dstY1) < MIN2(srcY0, srcY1))
+ if (MAX2(dstY0, dstY1) <= MIN2(srcY0, srcY1))
return false; /* dst completely below src */
return true; /* some overlap */