From 72ee4e53b72a9f140e9e8cf62f82f935433a2948 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 4 Jul 2012 12:25:08 +0100 Subject: [PATCH] --- yaml --- r: 329245 b: refs/heads/master c: e9808edd98679680804dfbc42c5ee8f1aa91f617 h: refs/heads/master i: 329243: a5c923b0c7ffcc55c8cb2e9c6bc06e41afce734a v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/i915/i915_gem.c | 4 ++++ trunk/include/drm/i915_drm.h | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index bab669b5bc1e..cd90e456f1d5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c0c7babc48c4f6943ed3070d04630ea3ac9272ee +refs/heads/master: e9808edd98679680804dfbc42c5ee8f1aa91f617 diff --git a/trunk/drivers/gpu/drm/i915/i915_gem.c b/trunk/drivers/gpu/drm/i915/i915_gem.c index 5c4657a54f97..4be096068b35 100644 --- a/trunk/drivers/gpu/drm/i915/i915_gem.c +++ b/trunk/drivers/gpu/drm/i915/i915_gem.c @@ -3400,6 +3400,10 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data, ret = i915_gem_object_flush_active(obj); args->busy = obj->active; + if (obj->ring) { + BUILD_BUG_ON(I915_NUM_RINGS > 16); + args->busy |= intel_ring_flag(obj->ring) << 16; + } drm_gem_object_unreference(&obj->base); unlock: diff --git a/trunk/include/drm/i915_drm.h b/trunk/include/drm/i915_drm.h index b923b032743f..0f149fe32211 100644 --- a/trunk/include/drm/i915_drm.h +++ b/trunk/include/drm/i915_drm.h @@ -704,7 +704,11 @@ struct drm_i915_gem_busy { /** Handle of the buffer to check for busy */ __u32 handle; - /** Return busy status (1 if busy, 0 if idle) */ + /** Return busy status (1 if busy, 0 if idle). + * The high word is used to indicate on which rings the object + * currently resides: + * 16:31 - busy (r or r/w) rings (16 render, 17 bsd, 18 blt, etc) + */ __u32 busy; };