drm/i915: Don't update the render-clock for every bo.
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 30 Nov 2009 01:08:56 +0000 (01:08 +0000)
committerEric Anholt <eric@anholt.net>
Tue, 1 Dec 2009 17:42:16 +0000 (09:42 -0800)
Only update the render-clock on transition from busy to idle and vice
versa, or else we burn a significant percentage of the cpu just rewriting
the register -- not quite as power-friendly as intended ;-)

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Eric Anholt <eric@anholt.net>
drivers/gpu/drm/i915/intel_display.c

index a0f2941d7d7cc09d2e93759855cd3e9b0e496935..267adc6fbfc1c38a397d9a526fa45def38e8bc37 100644 (file)
@@ -4052,8 +4052,13 @@ void intel_mark_busy(struct drm_device *dev, struct drm_gem_object *obj)
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
                return;
 
-       dev_priv->busy = true;
-       intel_increase_renderclock(dev, true);
+       if (!dev_priv->busy) {
+               dev_priv->busy = true;
+               intel_increase_renderclock(dev, true);
+       } else {
+               mod_timer(&dev_priv->idle_timer, jiffies +
+                         msecs_to_jiffies(GPU_IDLE_TIMEOUT));
+       }
 
        list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
                if (!crtc->fb)