linux/drivers/gpu/drm/i915
Chris Wilson 8325a09dd0 drm/i915: Bump the inactive LRU on set-to-GTT-domain
Currently, we only bump the inactive LRU of an object when we bind
into the GTT for a page-fault. As the object may be used many times
before its mapping is zapped, we do not mark it as active as
frequently as we should. Userspace should be calling set-to-GTT-domain
before each pointer deference (for synchronous access) and so is a
good place to mark the buffer as active.

Marking the buffer as recently used places it at the end of the
inactive eviction queue, though still before anything with outstanding
rendering. This reduces the likelihood of evicting a buffer that is
going to be used again by the CPU in the near future. This way we can
hopefully avoid to kick out upload buffers right before we use them on
the gpu.

Note that we need to check that the object is not active or pinned,
for otherwise we create havoc on the active/pinned lists, which also
use obj->mm_list.

The active lists are sorted by and evicted in last GPU rendering
order, access by the CPU to a still active buffer therefore does not
affect its eviction ordering. Pinned objects are currently excluded
from eviction, therefore the only list that we need to bump for GTT
access by the CPU is the inactive list.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
[danvet: Added further explanations to the commit message as discussed
on irc.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-05-03 11:18:10 +02:00
..
dvo_ch7xxx.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_ch7017.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_ivch.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_sil164.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_tfp410.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo.h drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
i915_debugfs.c drm/i915: [sparse] __iomem fixes for debugfs 2012-05-03 11:18:00 +02:00
i915_dma.c drm/i915: haswell has 3 pipes as well 2012-04-17 12:13:08 +02:00
i915_drv.c drm/i915: create macros to handle masked bits 2012-05-03 11:18:08 +02:00
i915_drv.h drm/i915: manage PCH PLLs separately from pipes 2012-05-03 11:18:08 +02:00
i915_gem_debug.c drm/i915: drop KM_USER0 argument to k(un)map_atomic 2011-10-20 15:26:37 -07:00
i915_gem_evict.c drm/i915: No need to search again after retiring requests 2012-02-27 17:37:13 +01:00
i915_gem_execbuffer.c drm/i915: Remove the pipelined parameter from get_fence() 2012-04-18 13:15:43 +02:00
i915_gem_gtt.c drm/i915: simplify ppgtt setup 2012-04-12 21:14:10 +02:00
i915_gem_tiling.c drm/i915: Only the zap the VMA after updating the tiling parameters 2012-05-03 11:18:07 +02:00
i915_gem.c drm/i915: Bump the inactive LRU on set-to-GTT-domain 2012-05-03 11:18:10 +02:00
i915_ioc32.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_irq.c drm/i915: create macros to handle masked bits 2012-05-03 11:18:08 +02:00
i915_reg.h drm/i915: create macros to handle masked bits 2012-05-03 11:18:08 +02:00
i915_suspend.c drm/i915: manage PCH PLLs separately from pipes 2012-05-03 11:18:08 +02:00
i915_sysfs.c drm/i915: rc6 residency (fix the fix) 2012-04-23 09:30:14 +02:00
i915_trace_points.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_trace.h Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
intel_acpi.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
intel_bios.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
intel_bios.h drm/i915: VBT Parser cleanup for eDP block 2012-01-13 08:37:44 -08:00
intel_crt.c drm/i915: IBX+ doesn't have separate vsync/hsync controls on the VGA DAC 2012-04-18 10:34:49 +02:00
intel_display.c drm/i915: Remove too early plane enable on pre-PCH hardware 2012-05-03 11:18:09 +02:00
intel_dp.c drm/i915: manage PCH PLLs separately from pipes 2012-05-03 11:18:08 +02:00
intel_drv.h drm/i915: manage PCH PLLs separately from pipes 2012-05-03 11:18:08 +02:00
intel_dvo.c drm/i915/intel_i2c: refactor using intel_gmbus_get_adapter 2012-03-28 14:40:44 +02:00
intel_fb.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
intel_hdmi.c drm/i915: Enable HDMI on ValleyView 2012-03-29 00:00:09 +02:00
intel_i2c.c drm/i915/intel_i2c: reduce verbosity of some messages 2012-04-13 15:03:00 +02:00
intel_lvds.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
intel_modes.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
intel_opregion.c drm/i915: [sparse] __iomem fixes for opregion 2012-05-03 11:18:00 +02:00
intel_overlay.c drm/i915: [sparse] __iomem fixes for overlay 2012-05-03 11:18:00 +02:00
intel_panel.c i915: Add and use pr_fmt and pr_<level> 2012-03-18 21:50:21 +01:00
intel_pm.c drm/i915: implement Disable4x2SubspanOptimization w/a for ivb, too 2012-05-03 11:18:09 +02:00
intel_ringbuffer.c drm/i915: Use a global lock for modifying global irq flags 2012-05-03 11:18:09 +02:00
intel_ringbuffer.h drm/i915: Use a global lock for modifying global irq flags 2012-05-03 11:18:09 +02:00
intel_sdvo_regs.h misc latin1 to utf8 conversions 2012-01-02 13:04:55 +01:00
intel_sdvo.c drm/i915: [sparse] don't use variable size arrays 2012-04-18 10:34:50 +02:00
intel_sprite.c drm/i915/sprite: Avoid incurring extra vblank stall when updating plane on IVB 2012-05-03 11:17:59 +02:00
intel_tv.c drm/i915: fixup tv load-detect on enabled but not active crtc 2012-05-03 11:18:02 +02:00
Makefile drm/i915: move fbc-related functionality into intel_pm module 2012-04-18 15:22:53 +02:00