aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2009-02-18 12:44:56 -0500
committerDave Airlie <airlied@redhat.com>2009-02-22 19:06:26 -0500
commitf21289b355cee8738d80c2ae5cbd272c3f7b5689 (patch)
tree3c490c815c6aaed1bb48da0be455fa7273c40136 /drivers
parent5669fcacc58bf3a7386057addffd280d75380858 (diff)
drm/i915: Retire requests from i915_gem_busy_ioctl.
This ensures that the user gets the latest information from the hardware on whether the buffer is busy, potentially reducing the working set of objects that the user chooses. Signed-off-by: Eric Anholt <eric@anholt.net> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 58c789da95a3..8b50d4820389 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2872,6 +2872,13 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data,
2872 return -EBADF; 2872 return -EBADF;
2873 } 2873 }
2874 2874
2875 /* Update the active list for the hardware's current position.
2876 * Otherwise this only updates on a delayed timer or when irqs are
2877 * actually unmasked, and our working set ends up being larger than
2878 * required.
2879 */
2880 i915_gem_retire_requests(dev);
2881
2875 obj_priv = obj->driver_private; 2882 obj_priv = obj->driver_private;
2876 /* Don't count being on the flushing list against the object being 2883 /* Don't count being on the flushing list against the object being
2877 * done. Otherwise, a buffer left on the flushing list but not getting 2884 * done. Otherwise, a buffer left on the flushing list but not getting