twx-linux/drivers/gpu/drm
Rob Clark f7eff60ea0 drm: refcnt drm_framebuffer (v4.1)
This simplifies drm fb lifetime, and if the crtc/plane needs to hold
a ref to the fb when disabling a pipe until the next vblank, this
avoids the need to make disabling an overlay synchronous.  This is a
problem that shows up when userspace is using a drm plane to
implement a hw cursor.. making overlay disable synchronous causes
a performance problem when x11 is rapidly enabling/disabling the
hw cursor.  But not making it synchronous opens up a race condition
for crashing if userspace turns around and immediately deletes the
fb.  Refcnt'ing the fb makes it possible to solve this problem.

v1: original
v2: add drm_framebuffer_remove() which is called in all paths where
    fb->funcs->destroy() was directly called before.  This cleans
    up the CRTCs/planes that the fb was attached to.  You should
    only directly use drm_framebuffer_unreference() if you are also
    using drm_framebuffer_reference() to keep a ref to the fb.
v3: add comment explaining the fb refcount
v4: remove duplicate 'list_del(&fb->filp_head)'

[airlied: v4.1: fix local rejection]

Signed-off-by: Rob Clark <rob@ti.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-10-02 22:15:39 +10:00
..
ast Linux 3.6-rc7 2012-09-24 18:17:12 +02:00
cirrus Linux 3.6-rc7 2012-09-24 18:17:12 +02:00
exynos drm: refcnt drm_framebuffer (v4.1) 2012-10-02 22:15:39 +10:00
gma500 Linux 3.6-rc7 2012-09-24 18:17:12 +02:00
i2c drm/i2c/ch7006: Convert to dev_pm_ops 2012-08-24 09:56:08 +10:00
i810 drm: use drm_compat_ioctl for 32-bit apps 2012-09-06 06:55:02 +10:00
i915 drm/i915: Wrap external callers to IPS state with appropriate locks 2012-09-26 09:24:54 +02:00
mga drm: kill reclaim_buffers callback 2012-07-19 22:50:28 -04:00
mgag200 Linux 3.6-rc7 2012-09-24 18:17:12 +02:00
nouveau Linux 3.6-rc7 2012-09-24 18:17:12 +02:00
r128 drm: kill reclaim_buffers callback 2012-07-19 22:50:28 -04:00
radeon Linux 3.6-rc7 2012-09-24 18:17:12 +02:00
savage drm: use drm_compat_ioctl for 32-bit apps 2012-09-06 06:55:02 +10:00
shmobile drm: Renesas SH Mobile DRM driver 2012-09-18 12:28:22 +02:00
sis drm: use drm_compat_ioctl for 32-bit apps 2012-09-06 06:55:02 +10:00
tdfx drm: use drm_compat_ioctl for 32-bit apps 2012-09-06 06:55:02 +10:00
ttm drivers/gpu/drm/ttm/ttm_page_alloc_dma.c: Remove useless kfree 2012-10-02 09:33:26 +10:00
udl drm/udl: Add missing static storage class specifiers in udl_fb.c 2012-10-02 09:24:41 +10:00
via drm: use drm_compat_ioctl for 32-bit apps 2012-09-06 06:55:02 +10:00
vmwgfx Linux 3.6-rc7 2012-09-24 18:17:12 +02:00
ati_pcigart.c
drm_agpsupport.c
drm_auth.c
drm_buffer.c
drm_bufs.c drm: kill dma queue support 2012-07-19 22:50:55 -04:00
drm_cache.c drm/i915: Replace the array of pages with a scatterlist 2012-09-20 14:22:57 +02:00
drm_context.c
drm_crtc_helper.c
drm_crtc.c drm: refcnt drm_framebuffer (v4.1) 2012-10-02 22:15:39 +10:00
drm_debugfs.c drm: kill dma queue support 2012-07-19 22:50:55 -04:00
drm_dma.c drm: kill dma queue support 2012-07-19 22:50:55 -04:00
drm_dp_i2c_helper.c
drm_drv.c drm: make buffer management work without DRM_MASTER 2012-09-13 11:19:44 +10:00
drm_edid_load.c drm/edid: limit printk when facing bad edid 2012-09-17 11:16:40 +10:00
drm_edid_modes.h drm: consistently name interlaced modes 2012-09-13 11:21:03 +10:00
drm_edid.c Linux 3.6-rc7 2012-09-24 18:17:12 +02:00
drm_encoder_slave.c
drm_fb_cma_helper.c DRM: Add DRM KMS/FB CMA helper 2012-09-18 12:28:21 +02:00
drm_fb_helper.c drm/fb helper: don't call drm_helper_connector_dpms directly 2012-09-08 00:51:15 +02:00
drm_fops.c drm: track dev_mapping in more robust and flexible way 2012-07-25 14:09:30 +10:00
drm_gem_cma_helper.c DRM: Add DRM GEM CMA helper 2012-09-18 12:28:21 +02:00
drm_gem.c
drm_global.c
drm_hashtab.c
drm_info.c drm: kill dma queue support 2012-07-19 22:50:55 -04:00
drm_ioc32.c
drm_ioctl.c
drm_irq.c drm: Add missing static storage class specifier in drm_irq.c file 2012-08-24 10:00:56 +10:00
drm_lock.c drm: ditch strange DRIVER_DMA_QUEUE only error bail-out 2012-07-19 22:50:47 -04:00
drm_memory.c
drm_mm.c
drm_modes.c drm: Remove two unused fields from struct drm_display_mode 2012-08-22 09:27:27 +10:00
drm_pci.c drm/pci: add support for getting the supported link bw. 2012-07-19 22:29:25 -04:00
drm_platform.c
drm_prime.c
drm_proc.c drm: Add missing static storage class specifiers in drm_proc.c file 2012-08-22 09:30:00 +10:00
drm_scatter.c
drm_stub.c
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_usb.c
drm_vm.c drm: Remove unnecessary test for ARM. 2012-09-13 11:28:39 +10:00
Kconfig drm: Renesas SH Mobile DRM driver 2012-09-18 12:28:22 +02:00
Makefile drm: Renesas SH Mobile DRM driver 2012-09-18 12:28:22 +02: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