diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index ad672d85482..24fe8c10b4b 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -2309,7 +2309,14 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data, | |||
| 2309 | } | 2309 | } |
| 2310 | 2310 | ||
| 2311 | obj_priv = obj->driver_private; | 2311 | obj_priv = obj->driver_private; |
| 2312 | args->busy = obj_priv->active; | 2312 | /* Don't count being on the flushing list against the object being |
| 2313 | * done. Otherwise, a buffer left on the flushing list but not getting | ||
| 2314 | * flushed (because nobody's flushing that domain) won't ever return | ||
| 2315 | * unbusy and get reused by libdrm's bo cache. The other expected | ||
| 2316 | * consumer of this interface, OpenGL's occlusion queries, also specs | ||
| 2317 | * that the objects get unbusy "eventually" without any interference. | ||
| 2318 | */ | ||
| 2319 | args->busy = obj_priv->active && obj_priv->last_rendering_seqno != 0; | ||
| 2313 | 2320 | ||
| 2314 | drm_gem_object_unreference(obj); | 2321 | drm_gem_object_unreference(obj); |
| 2315 | mutex_unlock(&dev->struct_mutex); | 2322 | mutex_unlock(&dev->struct_mutex); |
