util/box: Add a intersect_2d helper

Fixes: 3d38c9597f ("zink: hook up KHR_partial_update")
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33855>
This commit is contained in:
Faith Ekstrand 2025-03-03 10:17:46 -06:00 committed by Marge Bot
parent 75a85134fa
commit 8cf921a742

View file

@ -190,6 +190,31 @@ u_box_union_2d(struct pipe_box *dst,
dst->y = y;
}
/* Aliasing of @dst permitted. */
static inline void
u_box_intersect_2d(struct pipe_box *dst,
const struct pipe_box *a, const struct pipe_box *b)
{
int x, y;
x = MAX2(a->x, b->x);
y = MAX2(a->y, b->y);
dst->width = MIN2(a->x + a->width, b->x + b->width) - x;
dst->x = x;
if (dst->width <= 0) {
dst->x = 0;
dst->width = 0;
}
dst->height = MIN2(a->y + a->height, b->y + b->height) - y;
dst->y = y;
if (dst->height <= 0) {
dst->y = 0;
dst->height = 0;
}
}
/* Aliasing of @dst permitted. */
static inline void
u_box_union_3d(struct pipe_box *dst,