[PATCH 02/13] glamor: Add glamor_program based copy acceleration
Michel Dänzer
michel at daenzer.net
Thu May 8 03:00:30 PDT 2014
On 06.05.2014 07:02, Keith Packard wrote:
>
> +static Bool
> +glamor_copy_gl(DrawablePtr src,
> + DrawablePtr dst,
> + GCPtr gc,
> + BoxPtr box,
> + int nbox,
> + int dx,
> + int dy,
> + Bool reverse,
> + Bool upsidedown,
> + Pixel bitplane,
> + void *closure)
> +{
> + PixmapPtr src_pixmap = glamor_get_drawable_pixmap(src);
> + PixmapPtr dst_pixmap = glamor_get_drawable_pixmap(dst);
> + glamor_pixmap_private *src_priv = glamor_get_pixmap_private(src_pixmap);
> + glamor_pixmap_private *dst_priv = glamor_get_pixmap_private(dst_pixmap);
> +
> + if (GLAMOR_PIXMAP_PRIV_HAS_FBO(dst_priv)) {
> + if (GLAMOR_PIXMAP_PRIV_HAS_FBO(src_priv)) {
> + if (glamor_copy_needs_temp(src, dst, box, nbox, dx, dy))
> + return glamor_copy_fbo_fbo_temp(src, dst, gc, box, nbox, dx, dy,
> + reverse, upsidedown, bitplane, closure);
> + else
> + return glamor_copy_fbo_fbo_draw(src, dst, gc, box, nbox, dx, dy,
> + reverse, upsidedown, bitplane, closure);
> + }
> + if (bitplane == 0)
> + return glamor_copy_cpu_fbo(src, dst, gc, box, nbox, dx, dy,
> + reverse, upsidedown, bitplane, closure);
> + }
> + return FALSE;
> +}
This results in a crash / memory corruption when confronted with
GLAMOR_DRM_ONLY pixmaps. glamor_copy_bail calls down to fb, but the
pixmap's devPrivate.ptr does not point to any usable storage.
This happens for me when a piglit test creates a depth 16 GLXPixmap.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the xorg-devel
mailing list