linux/drivers/gpu/drm/i915
Chris Wilson d9e86c0ee6 drm/i915: Pipelined fencing [infrastructure]
With this change, every batchbuffer can use all available fences (save
pinned and scanout, of course) without ever stalling the gpu!

In theory. Currently the actual pipelined update of the register is
disabled due to some stability issues. However, just the deferred update
is a significant win.

Based on a series of patches by Daniel Vetter.

The premise is that before every access to a buffer through the GTT we
have to declare whether we need a register or not. If the access is by
the GPU, a pipelined update to the register is made via the ringbuffer,
and we track the last seqno of the batches that access it. If by the
CPU we wait for the last GPU access and update the register (either
to clear or to set it for the current buffer).

One advantage of being able to pipeline changes is that we can defer the
actual updating of the fence register until we first need to access the
object through the GTT, i.e. we can eliminate the stall on set_tiling.
This is important as the userspace bo cache does not track the tiling
status of active buffers which generate frequent stalls on gen3 when
enabling tiling for an already bound buffer.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2010-12-02 10:07:05 +00:00
..
dvo_ch7xxx.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_ch7017.c drm/i915: Tidy dvo_ch7017 and print out which chip we detect 2010-09-28 23:33:17 +01:00
dvo_ivch.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_sil164.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_tfp410.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo.h drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
i915_debugfs.c drm/i915: Defer accounting until read from debugfs 2010-11-25 15:04:53 +00:00
i915_dma.c drm/i915/ringbuffer: Handle cliprects in the caller 2010-11-30 14:17:51 +00:00
i915_drv.c drm/i915: restore gtt on resume in the drm instead of in intel-gtt.ko 2010-11-23 20:14:46 +00:00
i915_drv.h drm/i915: Pipelined fencing [infrastructure] 2010-12-02 10:07:05 +00:00
i915_gem_debug.c drm/i915: Use drm_i915_gem_object as the preferred type 2010-11-23 20:19:10 +00:00
i915_gem_evict.c drm/i915: Avoid allocation for execbuffer object list 2010-11-25 21:19:26 +00:00
i915_gem_execbuffer.c drm/i915: Pipelined fencing [infrastructure] 2010-12-02 10:07:05 +00:00
i915_gem_gtt.c drm/i915: Use drm_i915_gem_object as the preferred type 2010-11-23 20:19:10 +00:00
i915_gem_tiling.c drm/i915: Pipelined fencing [infrastructure] 2010-12-02 10:07:05 +00:00
i915_gem.c drm/i915: Pipelined fencing [infrastructure] 2010-12-02 10:07:05 +00:00
i915_ioc32.c drm: convert drm_ioctl to unlocked_ioctl 2009-12-18 11:22:31 +10:00
i915_irq.c drm/i915: Tweak on-error bbaddr parsing for clarity 2010-11-25 15:03:24 +00:00
i915_mem.c drm: Remove memory debugging infrastructure. 2009-06-18 13:00:33 -07:00
i915_reg.h drm/i915: Add a mechanism for pipelining fence register updates 2010-11-25 15:01:39 +00:00
i915_suspend.c drm/i915: Only save and restore fences for UMS 2010-11-25 15:03:22 +00:00
i915_trace_points.c drm/i915: Add tracepoints 2009-09-23 01:05:21 +01:00
i915_trace.h drm/i915: Use drm_i915_gem_object as the preferred type 2010-11-23 20:19:10 +00:00
intel_acpi.c drm/i915: add _DSM support 2010-10-08 10:27:43 +01:00
intel_bios.c drm/i915: IS_IRONLAKE is synonymous with gen == 5 2010-10-21 19:08:39 +01:00
intel_bios.h drm/i915: Initialize panel timing registers if VBIOS did not 2010-10-19 09:17:24 +01:00
intel_crt.c drm/i915: Take advantage of auto-polling CRT hotplug detection on PCH hardware 2010-11-19 09:30:28 +00:00
intel_display.c drm/i915: Pipelined fencing [infrastructure] 2010-12-02 10:07:05 +00:00
intel_dp.c drm/i915: Fix typo from "Enable DisplayPort Audio" 2010-10-27 08:53:28 +01:00
intel_drv.h drm/i915: Thread the pipelining ring through the callers. 2010-11-23 20:19:16 +00:00
intel_dvo.c drm/i915/dvo: Fix panel and DDC i2c pins 2010-09-28 23:34:44 +01:00
intel_fb.c drm/i915: Use drm_i915_gem_object as the preferred type 2010-11-23 20:19:10 +00:00
intel_hdmi.c i915: enable AVI infoframe for intel_hdmi.c [v4] 2010-10-22 09:14:30 +01:00
intel_i2c.c Merge branch 'drm-intel-fixes' into drm-intel-next 2010-11-15 06:49:30 +00:00
intel_lvds.c drm/i915/lvds: Disable panel-fitter on gen4 for 1:1 scale factors 2010-12-01 10:26:35 +00:00
intel_modes.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
intel_opregion.c drm/i915: opregion_setup: iounmap correct address 2010-11-01 10:29:12 +00:00
intel_overlay.c drm/i915: Pipelined fencing [infrastructure] 2010-12-02 10:07:05 +00:00
intel_panel.c drm/i915/panel: Restore saved value of BLC_PWM_CTL 2010-11-23 09:54:17 +00:00
intel_ringbuffer.c drm/i915/ringbuffer: Handle cliprects in the caller 2010-11-30 14:17:51 +00:00
intel_ringbuffer.h drm/i915/ringbuffer: Handle cliprects in the caller 2010-11-30 14:17:51 +00:00
intel_sdvo_regs.h drm/i915/sdvo: Add missing TV filters 2010-08-09 11:24:29 -07:00
intel_sdvo.c drm/i915/sdvo: Always add a 30ms delay to make SDVO TV detection reliable 2010-11-24 17:37:17 +00:00
intel_tv.c Merge branch 'drm-intel-fixes' into drm-intel-next 2010-10-03 10:56:11 +01:00
Makefile drm/i915: Split i915_gem_execbuffer into its own file. 2010-11-25 21:19:25 +00:00