• Chris Wilson's avatar
    drm/i915: Avoid waitboosting on the active request · e9af4ea2
    Chris Wilson authored
    Watching a light workload on Baytrail (running glxgears and a 1080p
    decode), instead of the system remaining at low frequency, the glxgears
    would regularly trigger waitboosting after which it would have to spend
    a few seconds throttling back down. In this case, the waitboosting is
    counter productive as the minimal wait for glxgears doesn't prevent it
    from functioning correctly and delivering frames on time. In this case,
    glxgears happens to almost always be waiting on the current request,
    which we already expect to complete quickly (see i915_spin_request) and
    so avoiding the waitboost on the active request and spinning instead
    provides the best latency without overcommitting to upclocking.
    However, if the system falls behind we still force the waitboost.
    Similarly, we will also trigger upclocking if we detect the system is
    not delivering frames on time - again using a mechanism that tries to
    detect a miss and not preemptively upclock.
    
    v2: Also skip boosting for after missed vblank if the desired request is
    already active.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
    Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180118131609.16574-1-chris@chris-wilson.co.uk
    e9af4ea2
i915_gem.c 157 KB