diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-12-07 23:00:20 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-12-07 23:02:08 +0000 |
commit | 1a1c69762a14f50dd574a9cbabbfa1b1542f580e (patch) | |
tree | 117fc29dc9f936f0125e08206c9a60a4e5ffbad7 /drivers/gpu/drm/i915/i915_gem.c | |
parent | 0be732841fb925b6f1242211ea211c022b6ac26c (diff) | |
parent | 1b39d6f37622f1da70aa2cfd38bfff9a52c13e05 (diff) | |
download | talos-op-linux-1a1c69762a14f50dd574a9cbabbfa1b1542f580e.tar.gz talos-op-linux-1a1c69762a14f50dd574a9cbabbfa1b1542f580e.zip |
Merge branch 'drm-intel-fixes' into drm-intel-next
Conflicts:
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/intel_dp.c
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index b57ce033e42a..27fa2a1b26a5 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -3356,9 +3356,24 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data, * use this buffer rather sooner than later, so issuing the required * flush earlier is beneficial. */ - if (obj->base.write_domain & I915_GEM_GPU_DOMAINS) + if (obj->base.write_domain & I915_GEM_GPU_DOMAINS) { i915_gem_flush_ring(dev, obj->ring, 0, obj->base.write_domain); + } else if (obj->ring->outstanding_lazy_request == + obj->last_rendering_seqno) { + struct drm_i915_gem_request *request; + + /* This ring is not being cleared by active usage, + * so emit a request to do so. + */ + request = kzalloc(sizeof(*request), GFP_KERNEL); + if (request) + ret = i915_add_request(dev, + NULL, request, + obj->ring); + else + ret = -ENOMEM; + } /* Update the active list for the hardware's current position. * Otherwise this only updates on a delayed timer or when irqs |