[PATCH 02/13] glamor: Add glamor_program based copy acceleration

Keith Packard keithp at keithp.com
Thu May 8 08:48:23 PDT 2014


Michel Dänzer <michel at daenzer.net> writes:

> 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.

Any more hints here? The only way you can get to fb without a
devPrivate.ptr is if there is no FBO for the pixmap, and the pixmap
isn't just regular memory (like shm). I don't know how that would happen
for a DRM pixmap.

> This happens for me when a piglit test creates a depth 16 GLXPixmap.

Given the delights of UXA, I can't really tell whether this would work
for me. I need to go fix the intel driver to stop providing its own
fallback paths.

And, as the only way to get GLAMOR_DRM_ONLY pixmaps is by using EGL, I
can't test this on Xephyr, which uses GLX.

-- 
keith.packard at intel.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 810 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg-devel/attachments/20140508/89f03a3f/attachment-0001.sig>


More information about the xorg-devel mailing list