diff options
author | Anuj Phogat <[email protected]> | 2015-06-05 19:18:19 -0700 |
---|---|---|
committer | Anuj Phogat <[email protected]> | 2015-06-29 13:16:13 -0700 |
commit | 7f282d05a11e0c29bddc1fac8c7028c7e823234f (patch) | |
tree | 78b67791d584a68b657c745371fff29cc7a56555 /src/mesa/main | |
parent | 69ee316c1daf93b4a53b1c02301ffe9df9598d28 (diff) |
mesa: Add a new helper function _mesa_regions_overlap()
Signed-off-by: Anuj Phogat <[email protected]>
Reviewed-by: Brian Paul <[email protected]>
Diffstat (limited to 'src/mesa/main')
-rw-r--r-- | src/mesa/main/blit.c | 26 | ||||
-rw-r--r-- | src/mesa/main/blit.h | 6 |
2 files changed, 32 insertions, 0 deletions
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" @@ -59,6 +60,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, |