[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