diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-07-20 07:41:01 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-07-25 12:23:52 -0400 |
commit | 0201f1ecf4b81f08799b1fb9c8cdf1125b9b78a6 (patch) | |
tree | 51b722aace265466c15f884500542b1e54aa25e5 /drivers/gpu/drm/i915/i915_irq.c | |
parent | e5f1d962a8e4c5fd6b3a8155c0f7a40b0bff4a96 (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.c | 5 |
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) |