On Tue, Sep 04, 2012 at 01:55:44PM +0300, Pekka Paalanen wrote: > surface_accumulate_damage() will call surface_compute_bbox() with the > extents of the surface damage region, for transformed surfaces only. If > there is no damage, surface_compute_bbox() will round up the empty > rectangle to a 1x1 rectangle. Triangles are produced for this 1x1 > rectangle intersected with the surface. > > The problem showed up with the triangle fan debug, where some seemingly > garbage pixels showed up relative to rotated surfaces. > > Fix this by explicitly checking, that the area, for which a bounding box > is being computed for, is not zero. > > Note, that the bbox will also be empty if only one of width and height > is zero. We do not paint things with zero thickness.
All three patches look good, applied. Kristian > Signed-off-by: Pekka Paalanen <[email protected]> > Cc: Rob Clark <[email protected]> > --- > src/compositor.c | 6 ++++++ > 1 files changed, 6 insertions(+), 0 deletions(-) > > diff --git a/src/compositor.c b/src/compositor.c > index 868afe9..2b963f5 100644 > --- a/src/compositor.c > +++ b/src/compositor.c > @@ -347,6 +347,12 @@ surface_compute_bbox(struct weston_surface *surface, > int32_t sx, int32_t sy, > GLfloat int_x, int_y; > int i; > > + if (width == 0 || height == 0) { > + /* avoid rounding empty bbox to 1x1 */ > + pixman_region32_init(bbox); > + return; > + } > + > for (i = 0; i < 4; ++i) { > GLfloat x, y; > weston_surface_to_global_float(surface, > -- > 1.7.8.6 > _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
