[Mesa-dev] [PATCH] egl: Fix missing clamping in eglSetDamageRegionKHR
Ilia Mirkin
imirkin at alum.mit.edu
Sat Jul 7 23:53:15 UTC 2018
On Sat, Jul 7, 2018 at 5:05 PM, Harish Krupo <harish.krupo.kps at intel.com> wrote:
> Clamp the x and y co-ordinates of the rectangles.
>
> Signed-off-by: Harish Krupo <harish.krupo.kps at intel.com>
> ---
> src/egl/main/eglapi.c | 23 +++++++++--------------
> 1 file changed, 9 insertions(+), 14 deletions(-)
>
> diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
> index c110349119..c7d07c4fde 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,14 @@ _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 x, y;
> + x = CLAMP(rects[i], 0, surf_width);
> + y = CLAMP(rects[i + 1], 0, surf_height);
> +
> + rects[i] = x;
> + rects[i + 1] = y;
> + rects[i + 2] = CLAMP(rects[i + 2], x, surf_width);
> + rects[i + 3] = CLAMP(rects[i + 3], y, surf_height);
I believe the previous code for clamping the width/height was correct.
Note that this might end up with 0-width/height rects, hopefully the
downstream code can handle it.
> }
> }
>
> --
> 2.18.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list