linux/drivers/gpu/drm/i915
Chris Wilson 092467327c drm/i915: Write RING_TAIL once per-request
Ignoring the legacy DRI1 code, and a couple of special cases (to be
discussed later), all access to the ring is mediated through requests.
The first write to a ring will grab a seqno and mark the ring as having
an outstanding_lazy_request. Either through explicitly adding a request
after an execbuffer or through an implicit wait (either by the CPU or by
a semaphore), that sequence of writes will be terminated with a request.
So we can ellide all the intervening writes to the tail register and
send the entire command stream to the GPU at once. This will reduce the
number of *serialising* writes to the tail register by a factor or 3-5
times (depending upon architecture and number of workarounds, context
switches, etc involved). This becomes even more noticeable when the
register write is overloaded with a number of debugging tools. The
astute reader will wonder if it is then possible to overflow the ring
with a single command. It is not. When we start a command sequence to
the ring, we check for available space and issue a wait in case we have
not. The ring wait will in this case be forced to flush the outstanding
register write and then poll the ACTHD for sufficient space to continue.

The exception to the rule where everything is inside a request are a few
initialisation cases where we may want to write GPU commands via the CS
before userspace wakes up and page flips.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-09-10 15:35:58 +02:00
..
dvo_ch7xxx.c drm/i915: dvo_ch7xxx: fix vsync polarity setting 2013-07-25 16:10:22 +02:00
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h drm/i915: Remove unused mode_fixup() vfunc of struct intel_dvo_dev_ops 2013-09-05 21:39:59 +02:00
i915_debugfs.c drm/i915: Add additional pipe parameter for vlv_dpio_read and vlv_dpio_write. v2 2013-09-05 15:04:36 +02:00
i915_dma.c drm/i915: Write RING_TAIL once per-request 2013-09-10 15:35:58 +02:00
i915_drv.c drm/i915: ban badly behaving contexts 2013-09-06 17:55:50 +02:00
i915_drv.h drm/i915: Pass crtc to intel_update_watermarks() 2013-09-10 11:15:39 +02:00
i915_gem_context.c drm/i915: It's its! 2013-09-04 17:34:54 +02:00
i915_gem_debug.c drm/i915: Fix #endif comment 2013-08-09 10:45:52 +02:00
i915_gem_dmabuf.c drm/i915: Pin pages whilst mapping the dma-buf 2013-09-03 19:17:58 +02:00
i915_gem_evict.c drm/i915: More vma fixups around unbind/destroy 2013-09-04 17:34:42 +02:00
i915_gem_execbuffer.c drm/i915: ban badly behaving contexts 2013-09-06 17:55:50 +02:00
i915_gem_gtt.c drm/i915: Use Write-Through cacheing for the display plane on Iris 2013-08-22 13:31:38 +02:00
i915_gem_stolen.c drm/i915: inline vma_create into lookup_or_create_vma 2013-09-04 17:34:41 +02:00
i915_gem_tiling.c drm/i915: plumb VM into bind/unbind code 2013-08-08 14:04:20 +02:00
i915_gem.c drm/i915: ban badly behaving contexts 2013-09-06 17:55:50 +02:00
i915_gpu_error.c drm/i915: include hangcheck action and score in error_state 2013-09-06 17:56:17 +02:00
i915_ioc32.c
i915_irq.c drm/i915: include hangcheck action and score in error_state 2013-09-06 17:56:17 +02:00
i915_reg.h drm/i915: clean up power sequencing register port select definitions 2013-09-06 10:47:10 +02:00
i915_suspend.c Linux 3.10 2013-07-18 12:03:29 +02:00
i915_sysfs.c drm/i915: Adjust available RPS information through sysfs for vlv 2013-09-03 11:10:55 +02:00
i915_trace_points.c
i915_trace.h drm/i915: plumb VM into bind/unbind code 2013-08-08 14:04:20 +02:00
i915_ums.c drm/i915: scrap register address storage 2013-06-10 19:54:14 +02:00
intel_acpi.c i915: fix ACPI _DSM warning 2013-08-05 19:04:05 +02:00
intel_bios.c drm/i915: Parse the MIPI related VBT Block and store relevant info 2013-09-04 17:34:50 +02:00
intel_bios.h drm/i915: Parse the MIPI related VBT Block and store relevant info 2013-09-04 17:34:50 +02:00
intel_crt.c drm/i915: Apply the force-detect VGA w/a to Valleyview 2013-09-03 11:10:55 +02:00
intel_ddi.c drm/i915: expose intel_ddi_get_encoder_port() 2013-09-04 17:34:55 +02:00
intel_display.c drm/i915: Write RING_TAIL once per-request 2013-09-10 15:35:58 +02:00
intel_dp.c drm/i915: add support for per-pipe power sequencing on vlv 2013-09-06 10:49:34 +02:00
intel_drv.h drm/i915: Pass crtc to intel_update_watermarks() 2013-09-10 11:15:39 +02:00
intel_dsi_cmd.c drm/i915/dsi: s/size_t/int/ 2013-09-04 17:34:51 +02:00
intel_dsi_cmd.h drm/i915/dsi: s/size_t/int/ 2013-09-04 17:34:51 +02:00
intel_dsi_pll.c drm/i915: add VLV DSI PLL Calculations 2013-09-04 17:34:48 +02:00
intel_dsi.c drm/i915: Band Gap WA 2013-09-04 17:34:49 +02:00
intel_dsi.h drm/i915: add VLV DSI PLL Calculations 2013-09-04 17:34:48 +02:00
intel_dvo.c drm/i915: Remove unused mode_fixup() vfunc of struct intel_dvo_dev_ops 2013-09-05 21:39:59 +02:00
intel_fb.c drm/i915: Export intel_framebuffer_fini 2013-08-06 20:08:50 +02:00
intel_hdmi.c drm/i915: Add additional pipe parameter for vlv_dpio_read and vlv_dpio_write. v2 2013-09-05 15:04:36 +02:00
intel_i2c.c drm/i915: allow package C8+ states on Haswell (disabled) 2013-08-23 14:52:33 +02:00
intel_lvds.c drm/i915: Fix pipe config warnings when dealing with LVDS fixed mode 2013-09-03 19:18:00 +02:00
intel_modes.c drm/i915: Add "Automatic" mode for the "Broadcast RGB" property 2013-01-20 13:09:44 +01:00
intel_opregion.c drm/i915: add opregion function to notify bios of adapter power state 2013-09-04 17:34:56 +02:00
intel_overlay.c drm/i915: Add VM to pin 2013-08-05 19:04:09 +02:00
intel_panel.c drm/i915: Fix pipe config warnings when dealing with LVDS fixed mode 2013-09-03 19:18:00 +02:00
intel_pm.c drm/i915: Refactor max WM level 2013-09-10 11:17:19 +02:00
intel_ringbuffer.c drm/i915: Write RING_TAIL once per-request 2013-09-10 15:35:58 +02:00
intel_ringbuffer.h drm/i915: Write RING_TAIL once per-request 2013-09-10 15:35:58 +02:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: Remove unused mode_fixup() vfunc of struct intel_dvo_dev_ops 2013-09-05 21:39:59 +02:00
intel_sideband.c drm/i915: Add additional pipe parameter for vlv_dpio_read and vlv_dpio_write. v2 2013-09-05 15:04:36 +02:00
intel_sprite.c drm/i915: Pass crtc to intel_update_watermarks() 2013-09-10 11:15:39 +02:00
intel_tv.c drm/i915/tv: Use native encoder->mode_set callback 2013-08-04 21:25:22 +02:00
intel_uncore.c drm/i915: sanitize forcewake registers on reset 2013-09-03 11:10:54 +02:00
Makefile drm/i915: add VLV DSI PLL Calculations 2013-09-04 17:34:48 +02:00