On Thu, May 21, 2015 at 04:13:12PM -0700, Ian Scott wrote: > This improves the case for when we paint an area without SHM.
Improves? Xephyr is very much broken since commit a2b73da78de4e627965213d24a6c33f243a60eb6 Author: Julien Cristau <jcris...@debian.org> Date: Sun Jun 20 00:05:40 2010 +0100 > xcb_image_subimage() is used to create a subimage for the damaged area, which > is converted to native format if necessary. > > Signed-off-by: Ian Scott <ian.sc...@arteris.com> > --- > hw/kdrive/ephyr/hostx.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c > index dc265d5..3914f73 100644 > --- a/hw/kdrive/ephyr/hostx.c > +++ b/hw/kdrive/ephyr/hostx.c > @@ -1039,11 +1039,13 @@ hostx_paint_rect(KdScreenInfo *screen, > sx, sy, dx, dy, width, height, FALSE); > } > else { > - /* This is slow and could be done better */ This comment is still valid. :( xcb_image_subimage() does a very slow (get_pixel/put_pixel) copy even when it could just create a view in the native case. > - xcb_image_t *img = xcb_image_native (HostX.conn, scrpriv->ximg, 1); > - xcb_image_put(HostX.conn, scrpriv->win, HostX.gc, img, 0, 0, 0); > - if (scrpriv->ximg != img) > + xcb_image_t *subimg = xcb_image_subimage(scrpriv->ximg, sx, sy, > + width, height, 0, 0, 0); > + xcb_image_t *img = xcb_image_native(HostX.conn, subimg, 1); > + xcb_image_put(HostX.conn, scrpriv->win, HostX.gc, img, dx, dy, 0); > + if (subimg != img) > xcb_image_destroy(img); > + xcb_image_destroy(subimg); Nevertheless, Reviewed-by: Chris Wilson <ch...@chris-wilson.co.uk> -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel