[Mesa-dev] [PATCH v2] egl: Fix missing clamping in eglSetDamageRegionKHR

Qiang Yu yuq825 at gmail.com
Sun Jul 15 05:12:10 UTC 2018


Looks good for me.
Reviewed-by: Qiang Yu <yuq825 at gmail.com>

Regards,
Qiang
On Thu, Jul 12, 2018 at 12:28 AM Harish Krupo
<harish.krupo.kps at intel.com> wrote:
>
>
> Harish Krupo <harish.krupo.kps at intel.com> writes:
>
> > 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.kps at 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];
> >     }
> >  }
>
> Gentle ping :)
>
> Thank you
> Regards
> Harish Krupo
> _______________________________________________
> 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