linux/drivers/gpu/drm
Daniel Vetter 1286ff7397 i915: add dmabuf/prime buffer sharing support.
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: Dave Airlie <airlied@redhat.com>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-05-23 10:47:10 +01:00
..
ast drm/kms: fix Kconfig for new drivers. 2012-05-20 10:10:53 +01:00
cirrus drm/kms: fix Kconfig for new drivers. 2012-05-20 10:10:53 +01:00
exynos Merge branch 'exynos-drm-next' of git://git.infradead.org/users/kmpark/linux-samsung into drm-core-next 2012-05-22 10:39:57 +01:00
gma500 drm: Constify drm_mode_config_funcs pointer 2012-05-22 10:35:07 +01:00
i2c drm: add convenience function to create an range property 2012-02-09 10:15:25 +00:00
i810 kill mm argument of vm_munmap() 2012-04-21 01:58:20 -04:00
i915 i915: add dmabuf/prime buffer sharing support. 2012-05-23 10:47:10 +01:00
mga drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
mgag200 drm/kms: fix Kconfig for new drivers. 2012-05-20 10:10:53 +01:00
nouveau nouveau: add PRIME support 2012-05-23 10:46:55 +01:00
r128 drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
radeon ttm: add prime sharing support to TTM (v2) 2012-05-23 10:46:27 +01:00
savage drm: checking the wrong variable in savage_do_init_bci() 2012-05-17 11:42:27 +01:00
sis drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
tdfx
ttm ttm: add prime sharing support to TTM (v2) 2012-05-23 10:46:27 +01:00
udl udl: add prime fd->handle support. 2012-05-23 10:46:05 +01:00
via drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
vmwgfx ttm: add prime sharing support to TTM (v2) 2012-05-23 10:46:27 +01:00
ati_pcigart.c
drm_agpsupport.c
drm_auth.c drm: Fix authentication kernel crash 2012-01-25 09:27:45 +00:00
drm_buffer.c
drm_bufs.c VM: add "vm_mmap()" helper function 2012-04-20 17:29:13 -07:00
drm_cache.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-04-12 10:27:01 +01:00
drm_context.c drm: Unify and fix idr error handling 2012-04-24 09:50:20 +01:00
drm_crtc_helper.c drm: Don't initialize local ret variable when not needed 2012-05-22 10:32:58 +01:00
drm_crtc.c drm: add plane properties 2012-05-22 10:54:30 +01:00
drm_debugfs.c
drm_dma.c
drm_dp_i2c_helper.c
drm_drv.c drm: add generic ioctls to get/set properties on any object 2012-05-17 11:11:22 +01:00
drm_edid_load.c drm: Don't initialize local ret variable when not needed 2012-05-22 10:32:58 +01:00
drm_edid_modes.h drm: replace open-coded ARRAY_SIZE with macro 2012-04-20 13:12:16 +01:00
drm_edid.c drm: Store vendor IDs directly in the EDID quirk structure 2012-04-27 08:25:13 +01:00
drm_encoder_slave.c
drm_fb_helper.c drm: Make the CRTC gamma_set operation optional 2012-05-22 10:35:15 +01:00
drm_fops.c drm: Releasing FBs before releasing GEM objects during drm_release 2012-04-19 14:40:41 +01:00
drm_gem.c drm/prime: add exported buffers to current fprivs imported buffer list (v2) 2012-05-23 10:46:03 +01:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_ioc32.c drivers/gpu/drm/drm_ioc32.c: initialize all fields 2012-02-03 09:47:32 +00:00
drm_ioctl.c drm/prime: expose capability flags for userspace. 2012-05-18 11:12:16 +01:00
drm_irq.c drm: Don't initialize local ret variable when not needed 2012-05-22 10:32:58 +01:00
drm_lock.c drm: Don't initialize local ret variable when not needed 2012-05-22 10:32:58 +01:00
drm_memory.c drm: remove unused code 2012-02-29 10:18:29 +00:00
drm_mm.c
drm_modes.c drm: Add drm_mode_copy() 2012-03-15 09:52:51 +00:00
drm_pci.c drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
drm_platform.c drm: cope with platformdev->id == -1 2012-03-07 14:03:40 +00:00
drm_prime.c drm/prime: add exported buffers to current fprivs imported buffer list (v2) 2012-05-23 10:46:03 +01:00
drm_proc.c
drm_scatter.c
drm_stub.c drm: Don't initialize local ret variable when not needed 2012-05-22 10:32:58 +01:00
drm_sysfs.c drm: Miscellaneous typo fixes and documentation updates 2012-05-22 10:34:33 +01:00
drm_trace_points.c
drm_trace.h
drm_usb.c drm/usb: fix module license on drm/usb layer. 2012-04-19 09:33:32 +01:00
drm_vm.c drm: pass dev to drm_vm_{open,close}_locked() 2012-05-11 17:37:46 +01:00
Kconfig drm/kms: driver for virtual cirrus under qemu 2012-05-17 11:02:24 +01:00
Makefile drm/kms: driver for virtual cirrus under qemu 2012-05-17 11:02:24 +01:00
README.drm

************************************************************
* For the very latest on DRI development, please see:      *
*     http://dri.freedesktop.org/                          *
************************************************************

The Direct Rendering Manager (drm) is a device-independent kernel-level
device driver that provides support for the XFree86 Direct Rendering
Infrastructure (DRI).

The DRM supports the Direct Rendering Infrastructure (DRI) in four major
ways:

    1. The DRM provides synchronized access to the graphics hardware via
       the use of an optimized two-tiered lock.

    2. The DRM enforces the DRI security policy for access to the graphics
       hardware by only allowing authenticated X11 clients access to
       restricted regions of memory.

    3. The DRM provides a generic DMA engine, complete with multiple
       queues and the ability to detect the need for an OpenGL context
       switch.

    4. The DRM is extensible via the use of small device-specific modules
       that rely extensively on the API exported by the DRM module.


Documentation on the DRI is available from:
    http://dri.freedesktop.org/wiki/Documentation
    http://sourceforge.net/project/showfiles.php?group_id=387
    http://dri.sourceforge.net/doc/

For specific information about kernel-level support, see:

    The Direct Rendering Manager, Kernel Support for the Direct Rendering
    Infrastructure
    http://dri.sourceforge.net/doc/drm_low_level.html

    Hardware Locking for the Direct Rendering Infrastructure
    http://dri.sourceforge.net/doc/hardware_locking_low_level.html

    A Security Analysis of the Direct Rendering Infrastructure
    http://dri.sourceforge.net/doc/security_low_level.html