• Daniel Vetter's avatar
    i915: add dmabuf/prime buffer sharing support. · 1286ff73
    Daniel Vetter authored
    This adds handle->fd and fd->handle support to i915, this is to allow
    for offloading of rendering in one direction and outputs in the other.
    
    v2 from Daniel Vetter:
    - fixup conflicts with the prepare/finish gtt prep work.
    - implement ppgtt binding support.
    
    Note that we have squat i-g-t testcoverage for any of the lifetime and
    access rules dma_buf/prime support brings along. And there are quite a
    few intricate situations here.
    
    Also note that the integration with the existing code is a bit
    hackish, especially around get_gtt_pages and put_gtt_pages. It imo
    would be easier with the prep code from Chris Wilson's unbound series,
    but that is for 3.6.
    
    Also note that I didn't bother to put the new prepare/finish gtt hooks
    to good use by moving the dma_buf_map/unmap_attachment calls in there
    (like we've originally planned for).
    
    Last but not least this patch is only compile-tested, but I've changed
    very little compared to Dave Airlie's version. So there's a decent
    chance v2 on drm-next works as well as v1 on 3.4-rc.
    
    v3: Right when I've hit sent I've noticed that I've screwed up one
    obj->sg_list (for dmar support) and obj->sg_table (for prime support)
    disdinction. We should be able to merge these 2 paths, but that's
    material for another patch.
    
    v4: fix the error reporting bugs pointed out by ickle.
    
    v5: fix another error, and stop non-gtt mmaps on shared objects
    stop pread/pwrite on imported objects, add fake kmap
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    Signed-Off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    1286ff73
i915_drv.c 32.5 KB