From 7f282d05a11e0c29bddc1fac8c7028c7e823234f Mon Sep 17 00:00:00 2001 From: Anuj Phogat Date: Fri, 5 Jun 2015 19:18:19 -0700 Subject: [PATCH] mesa: Add a new helper function _mesa_regions_overlap() Signed-off-by: Anuj Phogat Reviewed-by: Brian Paul --- src/mesa/main/blit.c | 26 ++++++++++++++++++++++++++ src/mesa/main/blit.h | 6 ++++++ 2 files changed, 32 insertions(+) diff --git a/src/mesa/main/blit.c b/src/mesa/main/blit.c index db8fee5a414..4765198d63a 100644 --- a/src/mesa/main/blit.c +++ b/src/mesa/main/blit.c @@ -37,6 +37,7 @@ #include "framebuffer.h" #include "glformats.h" #include "mtypes.h" +#include "macros.h" #include "state.h" @@ -58,6 +59,31 @@ find_attachment(const struct gl_framebuffer *fb, } +/** + * \return true if two regions overlap, false otherwise + */ +bool +_mesa_regions_overlap(int srcX0, int srcY0, + int srcX1, int srcY1, + int dstX0, int dstY0, + int dstX1, int dstY1) +{ + if (MAX2(srcX0, srcX1) < MIN2(dstX0, dstX1)) + return false; /* dst completely right of src */ + + if (MAX2(dstX0, dstX1) < MIN2(srcX0, srcX1)) + return false; /* dst completely left of src */ + + if (MAX2(srcY0, srcY1) < MIN2(dstY0, dstY1)) + return false; /* dst completely above src */ + + if (MAX2(dstY0, dstY1) < MIN2(srcY0, srcY1)) + return false; /* dst completely below src */ + + return true; /* some overlap */ +} + + /** * Helper function for checking if the datatypes of color buffers are * compatible for glBlitFramebuffer. From the 3.1 spec, page 198: diff --git a/src/mesa/main/blit.h b/src/mesa/main/blit.h index 54b946e3192..88dd4a9ec8d 100644 --- a/src/mesa/main/blit.h +++ b/src/mesa/main/blit.h @@ -28,6 +28,12 @@ #include "glheader.h" +extern bool +_mesa_regions_overlap(int srcX0, int srcY0, + int srcX1, int srcY1, + int dstX0, int dstY0, + int dstX1, int dstY1); + extern void _mesa_blit_framebuffer(struct gl_context *ctx, struct gl_framebuffer *readFb, -- 2.30.2