linux/drivers/gpu/drm
Dave Airlie 3248877ea1 drm: base prime/dma-buf support (v5)
This adds the basic drm dma-buf interface layer, called PRIME. This
commit doesn't add any driver support, it is simply and agreed upon starting
point so we can work towards merging driver support for the next merge window.

Current drivers with work done are nouveau, i915, udl, exynos and omap.

The main APIs exposed to userspace allow translating a 32-bit object handle
to a file descriptor, and a file descriptor to a 32-bit object handle.

The flags value is currently limited to O_CLOEXEC.

Acknowledgements:
Daniel Vetter: lots of review
Rob Clark: cleaned up lots of the internals and did lifetime review.

v2: rename some functions after Chris preferred a green shed
fix IS_ERR_OR_NULL -> IS_ERR
v3: Fix Ville pointed out using buffer + kmalloc
v4: add locking as per ickle review
v5: allow re-exporting the original dma-buf (Daniel)

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Rob Clark <rob.clark@linaro.org>
Reviewed-by: Sumit Semwal <sumit.semwal@linaro.org>
Reviewed-by: Inki Dae <inki.dae@samsung.com>
Acked-by: Ben Widawsky <benjamin.widawsky@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-03-30 11:52:44 +01:00
..
exynos Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-03-22 13:08:22 -07:00
gma500 gma500: medfield: fix build without CONFIG_BACKLIGHT_CLASS_DEVICE 2012-03-26 09:33:24 +01:00
i2c drm: add convenience function to create an range property 2012-02-09 10:15:25 +00:00
i810 drm: drop setting vm_file to filp 2012-03-05 11:19:08 +00:00
i915 drm/i915: suspend fbdev device around suspend/hibernate 2012-03-29 07:44:27 +01:00
mga drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
nouveau drm/nouveau/i2c: fix thinko/regression on really old chipsets 2012-03-26 09:36:07 +01:00
r128 drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
radeon drm/radeon: Only warn if the intra-domain offset actually exceeds the limit. 2012-03-28 13:50:05 +01:00
savage drivers/gpu/drm/savage/savage_state.c: add missing kfree 2012-03-20 08:45:31 +00:00
sis drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
tdfx
ttm Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-03-22 13:08:22 -07:00
udl drm/usb: move usb support into a separate module 2012-03-20 06:59:29 +00:00
via drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
vmwgfx Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-03-22 13:08:22 -07:00
ati_pcigart.c
drm_agpsupport.c
drm_auth.c
drm_buffer.c
drm_bufs.c
drm_cache.c drm: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:17 +08:00
drm_context.c
drm_crtc_helper.c drm: allow loading an EDID as firmware to override broken monitor 2012-03-20 10:09:28 +00:00
drm_crtc.c drm/usb: move usb support into a separate module 2012-03-20 06:59:29 +00:00
drm_debugfs.c
drm_dma.c
drm_dp_i2c_helper.c
drm_drv.c drm: base prime/dma-buf support (v5) 2012-03-30 11:52:44 +01:00
drm_edid_load.c drm: allow loading an EDID as firmware to override broken monitor 2012-03-20 10:09:28 +00:00
drm_edid_modes.h
drm_edid.c drm: remove unneeded redefinition of DDC_ADDR 2012-03-21 10:19:53 +00:00
drm_encoder_slave.c
drm_fb_helper.c drm fb helper: remove unused variable crtc_id 2012-02-03 09:55:52 +00:00
drm_fops.c drm: base prime/dma-buf support (v5) 2012-03-30 11:52:44 +01:00
drm_gem.c drm: base prime/dma-buf support (v5) 2012-03-30 11:52:44 +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: add some caps for userspace to discover more info for dumb KMS driver (v2) 2012-02-16 18:35:11 +00:00
drm_irq.c drm: remove unused code 2012-02-29 10:18:29 +00:00
drm_lock.c
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: base prime/dma-buf support (v5) 2012-03-30 11:52:44 +01:00
drm_proc.c
drm_scatter.c
drm_stub.c drm/usb: move usb support into a separate module 2012-03-20 06:59:29 +00:00
drm_sysfs.c drm/sysfs: protect sysfs removal code against being run twice. 2012-03-15 13:35:31 +00:00
drm_trace_points.c
drm_trace.h
drm_usb.c drm: fix build with UDL if USB is a module 2012-03-16 09:28:03 +00:00
drm_vm.c drm: add core support for unplugging a device (v2) 2012-03-15 13:35:33 +00:00
Kconfig drm: base prime/dma-buf support (v5) 2012-03-30 11:52:44 +01:00
Makefile drm: base prime/dma-buf support (v5) 2012-03-30 11:52:44 +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