Re: [PATCH weston 3/3] compositor: do not round a zero area to non-zero

2012-09-04 Thread Kristian Høgsberg
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 
> Cc: Rob Clark 
> ---
>  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
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH weston 3/3] compositor: do not round a zero area to non-zero

2012-09-04 Thread Pekka Paalanen
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.

Signed-off-by: Pekka Paalanen 
Cc: Rob Clark 
---
 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
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel