diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index 97436a0254b..e0d9ddb343e 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -174,6 +174,11 @@ swrastPutImage(__DRIdrawable *draw, int op, int x, int y, int w, int h, return; } + /* clamp to drawable size */ + if (y + h > dri2_surf->base.Height) + h = dri2_surf->base.Height - y; + /* y-invert */ + y = dri2_surf->base.Height - y - h; if (size < max_req_len) { cookie = xcb_put_image( dri2_dpy->conn, XCB_IMAGE_FORMAT_Z_PIXMAP, dri2_surf->drawable, gc, w,