aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_irq.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-07-20 07:41:01 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-07-25 12:23:52 -0400
commit0201f1ecf4b81f08799b1fb9c8cdf1125b9b78a6 (patch)
tree51b722aace265466c15f884500542b1e54aa25e5 /drivers/gpu/drm/i915/i915_irq.c
parente5f1d962a8e4c5fd6b3a8155c0f7a40b0bff4a96 (diff)
drm/i915: Replace the pending_gpu_write flag with an explicit seqno
As we always flush the GPU cache prior to emitting the breadcrumb, we no longer have to worry about the deferred flush causing the pending_gpu_write to be delayed. So we can instead utilize the known last_write_seqno to hopefully minimise the wait times. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_irq.c')
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 566f61b9e47c..41ed41d70472 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -950,7 +950,8 @@ static void capture_bo(struct drm_i915_error_buffer *err,
950{ 950{
951 err->size = obj->base.size; 951 err->size = obj->base.size;
952 err->name = obj->base.name; 952 err->name = obj->base.name;
953 err->seqno = obj->last_rendering_seqno; 953 err->rseqno = obj->last_read_seqno;
954 err->wseqno = obj->last_write_seqno;
954 err->gtt_offset = obj->gtt_offset; 955 err->gtt_offset = obj->gtt_offset;
955 err->read_domains = obj->base.read_domains; 956 err->read_domains = obj->base.read_domains;
956 err->write_domain = obj->base.write_domain; 957 err->write_domain = obj->base.write_domain;
@@ -1045,7 +1046,7 @@ i915_error_first_batchbuffer(struct drm_i915_private *dev_priv,
1045 if (obj->ring != ring) 1046 if (obj->ring != ring)
1046 continue; 1047 continue;
1047 1048
1048 if (i915_seqno_passed(seqno, obj->last_rendering_seqno)) 1049 if (i915_seqno_passed(seqno, obj->last_read_seqno))
1049 continue; 1050 continue;
1050 1051
1051 if ((obj->base.read_domains & I915_GEM_DOMAIN_COMMAND) == 0) 1052 if ((obj->base.read_domains & I915_GEM_DOMAIN_COMMAND) == 0)