Reviewed-by: Edward O'Callaghan <[email protected]> On 10/07/2016 04:59 AM, Axel Davy wrote: > Gallium nine relies on aliasing to work with this function. > Without this patch, dirty region tracking was incorrect, which > could lead to incorrect textures or vertex buffers. > Fixes several game bugs with nine. > Fixes https://github.com/iXit/Mesa-3D/issues/234 > > Signed-off-by: Axel Davy <[email protected]> > Reviewed-by: Patrick Rudolph <[email protected]> > > Cc: "12.0" <[email protected]> > --- > src/gallium/auxiliary/util/u_box.h | 31 ++++++++++++++++++++----------- > 1 file changed, 20 insertions(+), 11 deletions(-) > > diff --git a/src/gallium/auxiliary/util/u_box.h > b/src/gallium/auxiliary/util/u_box.h > index eb41f8a..b3f478e 100644 > --- a/src/gallium/auxiliary/util/u_box.h > +++ b/src/gallium/auxiliary/util/u_box.h > @@ -124,11 +124,15 @@ static inline void > u_box_union_2d(struct pipe_box *dst, > const struct pipe_box *a, const struct pipe_box *b) > { > - dst->x = MIN2(a->x, b->x); > - dst->y = MIN2(a->y, b->y); > + int x, y; > > - dst->width = MAX2(a->x + a->width, b->x + b->width) - dst->x; > - dst->height = MAX2(a->y + a->height, b->y + b->height) - dst->y; > + x = MIN2(a->x, b->x); > + y = MIN2(a->y, b->y); > + > + dst->width = MAX2(a->x + a->width, b->x + b->width) - x; > + dst->height = MAX2(a->y + a->height, b->y + b->height) - y; > + dst->x = x; > + dst->y = y; > } > > /* Aliasing of @dst permitted. */ > @@ -136,13 +140,18 @@ static inline void > u_box_union_3d(struct pipe_box *dst, > const struct pipe_box *a, const struct pipe_box *b) > { > - dst->x = MIN2(a->x, b->x); > - dst->y = MIN2(a->y, b->y); > - dst->z = MIN2(a->z, b->z); > - > - dst->width = MAX2(a->x + a->width, b->x + b->width) - dst->x; > - dst->height = MAX2(a->y + a->height, b->y + b->height) - dst->y; > - dst->depth = MAX2(a->z + a->depth, b->z + b->depth) - dst->z; > + int x, y, z; > + > + x = MIN2(a->x, b->x); > + y = MIN2(a->y, b->y); > + z = MIN2(a->z, b->z); > + > + dst->width = MAX2(a->x + a->width, b->x + b->width) - x; > + dst->height = MAX2(a->y + a->height, b->y + b->height) - y; > + dst->depth = MAX2(a->z + a->depth, b->z + b->depth) - z; > + dst->x = x; > + dst->y = y; > + dst->z = z; > } > > static inline boolean >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
