linux/include/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
..
i2c drm: Import driver for the sil164 I2C TMDS transmitter. 2010-08-02 10:21:13 +10:00
ttm drm/ttm: remove stale declaration and field 2012-07-24 15:30:36 +10:00
drm_buffer.h drm: Add generic multipart buffer. 2010-02-23 09:46:20 +10:00
drm_cache.h drm/ttm: consolidate cache flushing code in one place. 2009-08-27 09:53:47 +10:00
drm_core.h drm: Fix support for PCI domains 2010-08-10 08:20:20 +10:00
drm_crtc_helper.h drm: Make the .mode_fixup() operations mode argument a const pointer 2012-07-19 21:52:38 -04:00
drm_crtc.h drm: refcnt drm_framebuffer (v4.1) 2012-10-02 22:15:39 +10:00
drm_dp_helper.h drm/dp: Add DPCD defines for register 0x007 2012-05-22 10:18:36 +01:00
drm_edid.h drm/edid: Add packed attribute to new gtf2 and cvt structs 2012-04-23 17:41:17 +01:00
drm_encoder_slave.h drm: Make the .mode_fixup() operations mode argument a const pointer 2012-07-19 21:52:38 -04:00
drm_fb_cma_helper.h DRM: Add DRM KMS/FB CMA helper 2012-09-18 12:28:21 +02:00
drm_fb_helper.h drm fb helper: remove unused variable crtc_id 2012-02-03 09:55:52 +00:00
drm_fixed.h drm: fixed: Add dfixed_frac 2012-04-27 09:29:35 +01:00
drm_fourcc.h Linux 3.6-rc7 2012-09-24 18:17:12 +02:00
drm_gem_cma_helper.h DRM: Add DRM GEM CMA helper 2012-09-18 12:28:21 +02:00
drm_global.h drm: move ttm global code to core drm 2010-08-04 09:46:06 +10:00
drm_hashtab.h drm: Remove unused members from struct drm_open_hash 2011-02-23 11:16:40 +10:00
drm_mem_util.h introduce SIZE_MAX 2012-05-31 17:49:26 -07:00
drm_memory.h includecheck fix: include/drm, drm_memory.h 2009-09-20 16:02:58 +05:30
drm_mm.h drm: Add colouring to the range allocator 2012-07-16 05:59:37 +10:00
drm_mode.h drm: Check for invalid cursor flags 2012-08-24 09:38:40 +10:00
drm_os_linux.h drm/i915: add i915_lp_ring_sync helper 2009-11-05 14:47:07 -08:00
drm_pciids.h drm/radeon: add some new SI pci ids 2012-08-13 10:50:53 -04:00
drm_sarea.h drm: Define SAREA_MAX for Loongson (PageSize = 16KB). 2012-08-24 09:41:10 +10:00
drm_sysfs.h drm: Enable drm drivers to add drm sysfs devices. 2009-08-19 16:08:51 +10:00
drm_usb.h drm: add usb framework 2011-02-07 13:09:42 +10:00
drm.h drm/prime: expose capability flags for userspace. 2012-05-18 11:12:16 +01:00
drmP.h drm/i915: Replace the array of pages with a scatterlist 2012-09-20 14:22:57 +02:00
exynos_drm.h drm/exynos: add property for plane zpos 2012-07-27 11:13:54 +09:00
gma_drm.h gma500: fix ioctl confict 2012-03-10 13:06:04 +00:00
i810_drm.h
i915_drm.h drm/i915: s/cacheing/caching/ 2012-09-26 09:24:36 +02:00
intel-gtt.h drm/i915: Replace the array of pages with a scatterlist 2012-09-20 14:22:57 +02:00
Kbuild drm/exynos: exynos_drm.h header file fixes 2012-02-15 10:29:12 +09:00
mga_drm.h Fix common misspellings 2011-03-31 11:26:23 -03:00
nouveau_drm.h drm/nouveau: mark most of our ioctls as deprecated, move to compat layer 2012-07-26 10:28:15 +10:00
r128_drm.h
radeon_drm.h drm/radeon/kms: implement timestamp userspace query (v2) 2012-08-13 10:50:56 -04:00
savage_drm.h Fix common misspellings 2011-03-31 11:26:23 -03:00
sis_drm.h drm/sis: fixup sis_mm ioctl structs 2012-07-19 22:51:58 -04:00
via_drm.h drm/via: track obj->drm_fd relations in the driver 2011-12-22 00:33:19 +01:00
vmwgfx_drm.h vmwgfx: Reinstate the update_layout ioctl 2011-11-02 08:30:31 +00:00