On Sunday, 2018-07-08 12:53:00 +0530, Harish Krupo wrote:
> Clamp the x and y co-ordinates of the rectangles.
> 
> v2: Clamp width/height after converting to co-ordinates
>     (Ilia Merkin)
> 
> Signed-off-by: Harish Krupo <harish.krupo....@intel.com>
> ---
>  src/egl/main/eglapi.c | 25 +++++++++++--------------
>  1 file changed, 11 insertions(+), 14 deletions(-)
> 
> diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
> index c110349119..deb479b6d5 100644
> --- a/src/egl/main/eglapi.c
> +++ b/src/egl/main/eglapi.c
> @@ -1320,9 +1320,7 @@ eglSwapBuffersWithDamageKHR(EGLDisplay dpy, EGLSurface 
> surface,
>  }
>  
>  /**
> - * If the width of the passed rect is greater than the surface's
> - * width then it is clamped to the width of the surface. Same with
> - * height.
> + * Clamp the rectangles so that they lie within the surface.
>   */
>  
>  static void
> @@ -1334,17 +1332,16 @@ _eglSetDamageRegionKHRClampRects(_EGLDisplay* disp, 
> _EGLSurface* surf,
>     EGLint surf_width = surf->Width;
>  
>     for (i = 0; i < (4 * n_rects); i += 4) {
> -      EGLint x, y, rect_width, rect_height;
> -      x = rects[i];
> -      y = rects[i + 1];
> -      rect_width = rects[i + 2];
> -      rect_height = rects[i + 3];
> -
> -      if (rect_width > surf_width - x)
> -         rects[i + 2] = surf_width - x;
> -
> -      if (rect_height > surf_height - y)
> -         rects[i + 3] = surf_height - y;
> +      EGLint x1, y1, x2, y2;
> +      x1 = rects[i];
> +      y1 = rects[i + 1];
> +      x2 = rects[i + 2] + x1;
> +      y2 = rects[i + 3] + y1;
> +
> +      rects[i] = CLAMP(x1, 0, surf_width);
> +      rects[i + 1] = CLAMP(y1, 0, surf_height);
> +      rects[i + 2] = CLAMP(x2, 0, surf_width) - rects[i];
> +      rects[i + 3] = CLAMP(y2, 0, surf_height) - rects[i + 1];

This looks correct to me:
Reviewed-by: Eric Engestrom <eric.engest...@intel.com>

I ran it through our CI as well, looks all good, no regression;
would you like one of us to push it for you?

>     }
>  }
>  
> -- 
> 2.18.0
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to