Adam Jackson <a...@redhat.com> writes: > Same trick as in fb: just do a normal GetImage and deal with the > planemask on the CPU if you have to. Since the software fallback hit for > glamor is pretty brutal, this is a much more impressive win for glamor > than it was for fb: > > 11100.0 87700.0 (7.901) (copy 0xaaaaaaaa) ShmGetImage 10x10 square > 9840.0 47800.0 (4.858) (copy 0xaaaaaaaa) ShmGetImage 100x100 square > 1550.0 4240.0 (2.735) (copy 0xaaaaaaaa) ShmGetImage 500x500 square > 9450.0 78900.0 (8.349) (0xaaaaaaaa) GetImage 10x10 square > 6910.0 30900.0 (4.472) (0xaaaaaaaa) GetImage 100x100 square > 431.0 2020.0 (4.687) (0xaaaaaaaa) GetImage 500x500 square > > Measured with Xephyr -glamor on Skylake GT3e. > > Signed-off-by: Adam Jackson <a...@redhat.com> > --- > glamor/glamor_image.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/glamor/glamor_image.c b/glamor/glamor_image.c > index 3158749..7e17961 100644 > --- a/glamor/glamor_image.c > +++ b/glamor/glamor_image.c > @@ -116,7 +116,7 @@ glamor_get_image_gl(DrawablePtr drawable, int x, int y, > int w, int h, > if (!GLAMOR_PIXMAP_PRIV_HAS_FBO(pixmap_priv)) > goto bail; > > - if (format != ZPixmap || !glamor_pm_is_solid(drawable->depth, > plane_mask)) > + if (format != ZPixmap) > goto bail; > > glamor_get_drawable_deltas(drawable, pixmap, &off_x, &off_y); > @@ -128,6 +128,16 @@ glamor_get_image_gl(DrawablePtr drawable, int x, int y, > int w, int h, > drawable->x + off_x, drawable->y + off_y, > -x, -y, > (uint8_t *) d, byte_stride); > + > + if (!glamor_pm_is_solid(drawable->depth, plane_mask)) { > + FbStip pm = fbReplicatePixel(plane_mask, drawable->bitsPerPixel); > + FbStip *dst = (void *)d; > + uint32_t dstStride = byte_stride /= sizeof(FbStip);
I don't think you want the second '=' here. Harmless, but looked weird. Other than that, r-b. > + > + for (int i = 0; i < dstStride * h; i++) > + dst[i] &= pm; > + } > + > return TRUE; > bail: > return FALSE; > -- > 2.9.3 > > _______________________________________________ > xorg-devel@lists.x.org: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: https://lists.x.org/mailman/listinfo/xorg-devel
signature.asc
Description: PGP signature
_______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel